Попытка поместить исключение в RewriteRule в .htaccess

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

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? раздел ="

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

12
задан alex 9 February 2010 в 02:30
поделиться

1 ответ

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

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

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

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

21
ответ дан 2 December 2019 в 07:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: