Вы можете сделать это с помощью mod_rewrite. Вы не указали свои точные настройки, но если у вас есть конфигурация типа mod_proxy, вы просто хотите убедиться, что перезаписи не мешают прохождению обычного трафика. В общем смысле в вашей конфигурации Apache вы должны:
- Включить перезапись
- Проверить условие
- Применение правила перезаписи на основе условий
Чтобы привести очень простой пример, если вы ищете ключ в строке запроса и запрещаете доступ (403), если он отсутствует, вы должны сделать что-то вроде этого:
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} !somekey
RewriteRule ^.*$ - [F,L]
Это может быть настолько сложным, насколько вы действительно хотите, вы можете связать условия вместе (неявное И, или явное, или с флагом [ИЛИ]), и вы можете обслуживать реальную страницу, а не запрещенное сообщение.
Как всегда, создайте резервную копию вашей конфигурации, прежде чем приступать к работе, и может быть хорошей идеей проверить это с помощью .htaccess (хотя из соображений производительности лучше перенести его в фактическую конфигурацию для производственных нагрузок).
Документация по переписыванию также является отличным ресурсом:
http://httpd.apache.org/docs/current/mod/mod_rewrite.html
Это действительно неплохая документация. Для некоторых указателей вам нужно будет найти флаги ([L] = последний; [P] = рассматривать как прокси-запрос; [F] = запрещенный и т. д.), и вам понадобится кто-то, кто знаком с синтаксисом регулярных выражений.
person
Adam Comerford
schedule
15.01.2012