Apache переписать на 404 за исключением совпадения запроса - PullRequest
1 голос
/ 09 февраля 2012

Я пытаюсь обработать логически простую операцию, но apache rewrite не обрабатывает запросы строки запроса моего сайта.Я слышал, что это не делает это в конце концов.Все еще не может понять его синтаксис регулярных выражений.

RewriteEngine on
RewriteBase /
#RewriteCond %{QUERY_STRING} ^\?category=([a-z])$ // WHY DO I NEED THIS?
RewriteRule ^!(?category=[a-z]+|?do=[a-z]+)$ [R=404,L,NC]

Цель состоит в том, чтобы отправить клиента на 404 для любого запроса, НЕ соответствующего /? Category = [az] + и /? Do = [az] +.Было бы намного лучше, если бы можно было загружать шаблоны из текстового файла.

Недостаточно документации Apache и Google не помогает.

1 Ответ

4 голосов
/ 09 февраля 2012

Не включайте строку запроса в RewriteRule. Это соответствует RewriteCond.

RewriteEngine on
RewriteBase /

# For js & css
# Normally this would be done with:
# RewriteCond %{REQUEST_FILENAME} !-f
# But since you might have files here you're trying to put a 404 on, 
# we'll do it differently, matching css & js files
RewriteCond %{REQUEST_FILENAME} !^(.*)\.(css|js)$

#Conditions check if either query param is missing (negated with !)
RewriteCond %{QUERY_STRING} !category=([a-z]+) 
RewriteCond %{QUERY_STRING} !do=([a-z]+)

# Rewrite anything not matched by the querystring conditions above...
# Edit -- was missing the rewrite target ( - )
RewriteRule ^(.*)$ - [R=404,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...