Попытка поместить исключение для RewriteRule в .htaccess - PullRequest
12 голосов
/ 09 февраля 2010

Я перенаправляю все запросы так:

RewriteRule ^sitemap.xml$ sitemap.php?/ [QSA,L]

# the line below is the one I'm having trouble with

RewriteCond %{REQUEST_URI}  !^market-reports$ 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /index.php?section=$1 [QSA,L]

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

По сути, я пытаюсь сказать: «Если входящий URL-адрес является файлом, каталогом или / market-reports / ничего не делать. В противном случае отправьте URL-адрес на index.php? Section ="

Что я делаю не так? Спасибо

1 Ответ

20 голосов
/ 09 февраля 2010

Так что вам просто нужно игнорировать http://yourdomain.com/market-reports (в дополнение к файлам / каталогам?). Вы должны быть в порядке с:

RewriteCond %{REQUEST_URI} !^/market-reports/?$

Это будет (не) соответствовать "http://yourdomain.com/market-reports", а также" http://yourdomain.com/market-reports/" как знак вопроса "?" В словаре Perl-совместимых регулярных выражений, который использует mod_rewrite, делает сравнение необязательным подстановочный знак) до конца якоря строки, который представлен буквенным знаком доллара "$".

Символ «^» действует как якорь, соответствующий началу строки и «!» отменяет совпадение, так что любой строковый URL, который не соответствует остальной части выражения, будет переписан с другими указанными правилами. См. mod_rewrite словарь регулярных выражений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...