У меня есть сервер Ubuntu 13.04 с нормальным стандартным Apache 2.2 с работающим SSI. Я получил ошибку в ухе, и я установил ppa:rhardy/apache24x
PPA для обновления моего сервера Apache 2.4.
Хотя это не было чистым обновлением, я исправил большинство недостатков.
Однако я до сих пор не могу понять, как заставить работать Server-Side Includes. Все выглядит нормально, но когда я захожу на один из своих сайтов, обслуживаемых этим сервером, который использует SSI, он не работает.
у меня есть /etc/apache2/mods-enabled/include.load
символическая ссылка на /etc/apache2/mods-available/include.load
Конфигурационный файл моего сайта выглядит так:
<VirtualHost *>
ServerAdmin webmaster@myserver.com
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 все еще не работает. Что мне не хватает?
Спасибо.
Похоже, что есть разница в том, как Apache 2.2 обрабатывает <Directory>
записи, которые соответствуют 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 снова будут работать.