SSI включає непрацювання Debian з Apache


12

Я намагаюся змусити SSI працювати над Debian під керуванням Apache, однак .shtmlфайли не розбираються. З файлу PHP з phpinfo()я можу побачити, що в розділі завантажених модулів відображається наступне:

mod_mime_xattr mod_mime mod_mime_magic

У /etc/apache2/mods-enabled/mime.confмене є (серед іншого):

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

У /etc/apache2/sites-enabled/domain.com.conf(для віртуального хоста, про який йде мова) я маю:

<Directory /home/username/public_html>
Options +Includes
allow from all
AllowOverride All 
</Directory>

і для гарної міри я також додав наступне:

<Directory />
Options +Includes
</directory>

У .htaccessфайл користувача я спробував додати:

Options +Includes
AddType text/html shtml
AddHandler server-parsed shtml

Здається, нічого не працює. Як я можу це навіть налагодити?

Редагувати:

Ось результат ls /etc/apache2/mods-enabled/у випадку, якщо це допоможе

actions.conf          dav_svn.load         proxy_balancer.load
actions.load          deflate.conf         proxy.conf
alias.conf            deflate.load         proxy_connect.load
alias.load            dir.conf             proxy_http.load
auth_basic.load       dir.load             proxy.load
auth_digest.load      env.load             python.load
authn_file.load       fcgid.conf           reqtimeout.conf
authz_default.load    fcgid.load           reqtimeout.load
authz_groupfile.load  mime.conf            rewrite.load
authz_host.load       mime.load            ruby.load
authz_user.load       mime_magic.conf      setenvif.conf
autoindex.conf        mime_magic.load      setenvif.load
autoindex.load        mime-xattr.load      ssl.conf
cgi.load              negotiation.conf     ssl.load
dav_fs.conf           negotiation.load     status.conf
dav_fs.load           php5.conf            status.load
dav.load              php5.load            suexec.load
dav_svn.conf          proxy_balancer.conf

Коли ви відвідуєте .shtmlсторінку, чи бачите щось у журналі помилок Apache?
Zoredache

Власне, так. In error.log[error] an unknown filter was not added: includes
Майк

Коментуючи рядок, це AddOutputFilter INCLUDES .shtmlпозбавляється від помилки, але все ж не вирішує проблему
Майк

Гаразд я зрозумів це. Я опублікую свою відповідь у випадку, якщо у інших будуть такі самі проблеми.
Майк

Відповіді:


12

Для того, щоб робота сервера включалася до роботи, includeмодуль також потрібно завантажити. Ви можете зробити це, виконавши в якості root таке:

a2enmod include

Або виконати наступне:

ln -s /etc/apache2/mods-available/include.conf /etc/apache2/mods-enabled/include.conf
ln -s /etc/apache2/mods-available/include.load /etc/apache2/mods-enabled/include.load

Потім перезапустіть апаш.

Зауважте, якби ви додавали SSI до .shtmlфайлів, які .htaccessви робили AddOutputFilter INCLUDES .shtml. Або замінити .shtmlбудь-який тип файлу, який ви хочете розібрати на стороні сервера.

Поточний конфігураційний файл Debian /etc/apache2/mods-available/mime.confмістить помилку, оскільки він додає наступне:

<IfModule mod_mime.c>
[...]
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
[...]
</IfModule>

без попередньої перевірки, чи mod_include.cзавантажено. Щоб обійти це, ви можете змінити ці рядки на:

<IfModule mod_mime.c>
[...]
<IfModule mod_include.c>
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>
[...]
</IfModule>

Ці <IfModule>теги можуть бути вкладеними. Це дозволить позбутися від повідомлень про помилки, які виникають у випадку mod_include.cне завантаженого.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.