Перезапись URL Перезапись бланков с исключениями каталогов - PullRequest
4 голосов
/ 01 декабря 2008

У меня есть веб-сайт, который использует общее правило mod_rewrite, чтобы отправить все запросы на страницу index.php, за исключением некоторых расширений файлов:

RewriteRule !\.(js|ico|gif|jpg|JPG|png|css|php|phtml|pdf|txt|xml)$ index.php

Что мне нужно сделать, так это исключить из этого правила определенный каталог (включая любые файлы или подкаталоги, содержащиеся в нем) - какое лучшее решение?

Вот мой полный файл .htaccess, на случай, если что-то еще внутри него мешает:

RewriteEngine ON
RewriteCond %{HTTP_HOST} !^www\..*
RewriteCond %{HTTP_HOST}   !^$
RewriteCond %{HTTP_HOST} ^([^.]*)\.(co\.uk)
RewriteRule ^.*$     http://www.%1.%2%{REQUEST_URI} [R=permanent,L]

AddHandler application/x-httpd-php .phtml

RewriteRule !\.(js|ico|gif|jpg|JPG|png|css|php|phtml|pdf|txt|xml)$ index.phtml

php_value display_errors "On"

Ответы [ 2 ]

7 голосов
/ 02 декабря 2008

Перед строкой, которую вы цитируете, например, для каталога с именем 'style' необходимо:

RewriteRule  ^style/  -  [L]

Дефис означает «без перенаправления», а «[L]» означает «последнее правило», так как не пытайтесь сопоставить URL с последующими правилами. Вы можете добавить столько строк, сколько захотите, но они должны быть перед строкой, указанной в вопросе.

0 голосов
/ 01 декабря 2008

Вы можете проверить с помощью RewriteCond %{REQUEST_FILENAME} !-f любой запрос, который не соответствует существующему имени файла.

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