Членораздельная адресация Никита Кислицин Хакер, номер #071, стр. 071-116-4 Альтернативные способы Повнимательнее почитав доки по конфигурации Apache, можно найти занимательную вещицу. Оказывается, если в установках директории прописать Options Multiviews, это приведет к некоторой неоднозначности работы веб-сервера. Так, если пользователь запросит несуществующую директорию, будет произведен поиск файла с похожим именем и самый похожий будет выведен согласно его типу MIME. Найденный при таком поиске php-скрипт будет выполнен, и пользователь увидит результат его работы. Каким же образом можно передать в этом случае сценарию какой-нибудь параметр? Давай рассмотрим тривиальный пример: есть новостной скрипт, который показывает новости за конкретный день. В этом случае, если пользователь обратится к адресу /news/2004-10-06, будет выполнен скрипт news.php и внутри него не составит большого труда адекватно разобрать содержимое переменной $REQUEST_URI. Сделать это самостоятельно ты легко сможешь по образу и подобию уже рассмотренных мною примеров. Также офигительных результатов можно добиться, используя модуль для Apache mod_rewrite. Чтобы включить его поддержку, достаточно раскомментировать строку LoadModule mod_rewrite /path/to/module в httpd.conf. В конфигурации директории необходимо добавить строку RewriteEngine On, а после нее - команду RewriteRule: RewriteRule <шаблон> <замена> . Например RewriteRule ^(.*).htm$ /content/$1. Обрати внимание: $1 – это вхождение, взятое в кавычки и скобки. Кроме того, нельзя не упомянуть о блоке FilesMatch, который позволяет специфицировать обработчика для файлов, попадающих под определенный шаблон. Это очень удобно. Например: <FilesMatch "^(article)$"> ForceType application/x-httpd-php </FilesMatch> В случае если пользователь запрашивает /news либо /news/la-la, сервер выполняет файл news как application/x-httpd-php. Стоит ли говорить, что внутри этого скрипта реализуется обработка переменной $REQUEST_URI. Вот основные методы, которые используются web-программистами, чтобы обеспечить интуитивную адресацию документов на сайте и повысить устойчивость сценариев к сетевым взломам. Ведь лучший способ обезопасить свои программы – предоставить взломщику минимум информации о них. |