Использование Apache на стороне сервера управления потоком в PHP?

Как уже обсуждалось в этом вопросе, я использую Apache mod_include с условными операторами управления потоком для изменения поведения включенных shtml-файлов в зависимости от URL родительской страницы. У меня проблема в том, что некоторые страницы сайта являются страницами PHP, что, по-видимому, означает, что директивы mod_include игнорируются (и вместо этого рассматриваются как стандартные html-комментарии).

Есть ли способ, чтобы страницы PHP правильно обрабатывали эти директивы mod_include?

В частности, вот что я пытаюсь обработать:

<!--#if expr='"$DOCUMENT_NAME" = /(podcasts\.php)|(series\.php)/' -->
<li id="features" class="current">
<!--#else -->
<li id="features">
<!--#endif -->

Подобные блоки строк работают в файлах.shtml на сайте, но для страниц php все вышеперечисленное заканчивается выводом на клиент.

Редактировать: Самое близкое к решению, которое я придумала, это имитировать функциональность включенного shtml-файла в php-файле. Мне не нравится это решение, потому что оно означает, что добавление ссылок в будущем потребует добавления их в несколько мест.

2 ответа

Решение

Предполагая, что вы используете PHP через mod_php (может даже не иметь значения), просто добавив:

AddOutputFilter INCLUDES .shtml .php

и он отлично работает как для.shtml, так и для.php, причем оба они правильно проанализированы.

Я только начал читать о SSI, но нашел эту цитату на http://httpd.apache.org/docs/2.2/howto/ssi.html

Краткий комментарий о том, что не следует делать. Иногда вы будете встречать людей, которые рекомендуют вам просто попросить Apache проанализировать все файлы.html для SSI, чтобы вам не приходилось связываться с именами файлов.shtml. Эти люди, возможно, не слышали о XBitHack. Имейте в виду, что для этого вам необходимо, чтобы Apache прочитал каждый отдельный файл, который он отправляет клиентам, даже если они не содержат директив SSI. Это может немного замедлить ход событий, и это не очень хорошая идея.

Так что, если я правильно понимаю, вы не должны включать.php в AddOutputFilter, так как если заставляет Apache искать все страницы.php для директив SSI, так как это замедлит работу сервера.

Может быть, есть другое решение вашей проблемы?

http://httpd.apache.org/docs/2.2/mod/mod_include.html

/Philip

Другие вопросы по тегам