Я перенаправляю все запросы как так:
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? раздел ="
Что я делаю неправильно? Спасибо
Так что вам нужно просто игнорировать 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