Я разрабатываю веб-сайт локально с помощью USBWebServer (Apache, PHP, MySql), и я хотел использовать SSI, чтобы я мог включать такие вещи, как header, footer и так далее.
В мой .htaccess я положил следующие директивы:
Options +Includes
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
У меня есть основной index.shtml и внутри него у меня есть директивы:
<!--#include virtual="./files/navbar.shtml" -->
<!--#include virtual="./files/contact.shtml" -->
и это работает просто отлично.
Однако, когда я загружаю сайт на свой веб-сервер с теми же директивами в .htaccess, index.shtml не может ничего включать.
Мой текущий обходной путь заключается в том, чтобы изменить index.shtml на index.php и использовать php, например:
<?php
virtual('./files/navbar.shtml');
?>
, но я хотел бы знать, почему SSI не работает должным образом на сервере и что я могу сделать, чтобы он работал с .shtml?
Предполагая, что веб-сервер на вашем сервере является 2.x Apache:
Вы должны включить модуль Include. Если у вас есть права администратора на сервере, вы можете сделать это самостоятельно, выполнив от имени пользователя root
a2enmod include
и перезапустите веб-сервис с помощью «service apache2 restart» или «/etc/init.d/apache2 restart».
Если нет, то вы должны спросить своего администратора или поставщика сервера.
Кроме того, использование .htaccess может быть ограничено конфигурацией сервера, посмотрите, не настроены ли опции allow overide или аналогичные (или еще раз: обратитесь к администратору).
Других решений пока нет …