我有一台 Ubuntu 13.04 服务器,它有正常的、原版 Apache 2.2,SSI 可以正常工作。我遇到了一个问题,于是安装了ppa:rhardy/apache24x
PPA,以便将我的服务器升级到 Apache 2.4。
虽然这不是一次彻底的升级,但我已经解决了大部分问题。
但是,我仍然不知道如何让服务器端包含功能正常工作。一切看起来都正常,但是当我访问由此服务器提供服务并使用 SSI 的其中一个网站时,它不起作用。
我已经/etc/apache2/mods-enabled/include.load
符号链接到/etc/apache2/mods-available/include.load
我的网站的配置文件如下:
<VirtualHost *>
ServerAdmin [email protected]
ServerName www.myserver.com
ServerAlias myserver.com
DocumentRoot /var/www/myserver
<Directory />
Options +Indexes +FollowSymLinks +IncludesNOEXEC
AllowOverride None
XBitHack On
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</Directory>
</VirtualHost>
里面/var/www/myserver
:
-rwxr-xr-x 1 mike mike 776 Feb 20 2012 index.shtml*
文件内容以 SSI 开头:
<!--#include virtual="/include/header.html"-->
完成所有配置更改后,我重启了服务器,但 SSI 仍然无法正常工作。我遗漏了什么?
谢谢。
答案1
<Directory>
看起来 Apache 2.2 处理与之一致的条目的方式DocumentRoot
与 2.4 处理的方式有所不同。
在2.2中,以下代码:
DocumentRoot /var/www/myserver
<Directory />
[...]
</Directory>
会将任何指令(例如Options
和XBitHack
)应用于/var/www/myserver
目录及其中的文件。
在2.4中,配置需要改为这样:
DocumentRoot /var/www/myserver
<Directory /var/www/myserver>
[...]
</Directory>
然后apache2ctl restart
,SSI 将再次起作用。