SSI + RewriteEngine
Posted on 23 Март 2012 in Веб разработка by wakh
Очень часто для обработки запросов используют PHP скрипт с параметрами после "?" (знака вопроса). Это очень удобно для создания каталогов и ещё много чего. Позже придумали такую штуку как ЧПУ (SEF), для того чтобы в браузере некрасивые строки вида "/script.php?file.htm" заменять на примерно такие "/file/". Трудно переоценить эту возможность. Сейчас же мы увидим как это реализовать средствами SSI + RewriteEngine.
Для теста нам понадобится создать 3 файла, с таким содержимым:
index.html - Файл со ссылкой на несуществующие папку/файл
<a href="test/anyfile/">test/anyfile/</a>
.htaccess - обработчик поведения сервера
Options -Indexes Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_URI} \/test\/ RewriteRule ^(.*)$ redirect.html?$1 [L]
redirect.html - скрипт решающий что делать
<!--#if expr="$QUERY_STRING=/anyfile/" --> Query OK <!--#else --> <!--#endif --> <br /> <a href="./../../">home</a>
В примере мы ссылаемся на папку "anyfile" в папке "test". Папка "test" является сигналом обработчику, для выполнения редиректа на скрипт. При этом папка "anyfile" отдаётся параметром скрипту, т.е. то что следует после "?" в скриптах на PHP.
Для обработки параметра в скрипте используеюся системная переменная QUERY_STRING, обрабатывая которую мы можем выполнять разные дествия, например INCLUDE.