Остановка правил переписывания Apache - PullRequest
1 голос
/ 20 апреля 2011

В настоящее время я делаю что-то подобное в моем .htaccess:

RewriteRule ^assets/(.*)$   application/views/assets/$1

RewriteCond %{REQUEST_FILENAME} !/application/views/assets/.*

# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]

Однако есть ли способ, которым я могу удалить этот первый RewriteCond, например, использовать где-нибудь [L] или [S = 4], чтобы после применения первого RewriteRule (тот, что для ресурсов) мы двигались дальше? и не применять дальнейшие правила?

(Кстати, это файл .htaccess, используемый для инфраструктуры KohanaPHP.)

1 Ответ

1 голос
/ 20 апреля 2011

Ваше правило должно быть таким:

RewriteEngine on
Options +FollowSymlinks -MultiViews

RewriteCond %{REQUEST_URI} ^/assets
RewriteRule . - [S=10]

RewriteRule ^assets/(.*)$ /application/views/assets/$1 [L]

# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* /index.php/$0 [L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule .* /index.php/$0 [PT]

Обратите внимание S=10 вверху, чтобы пропустить следующее правило 10, если статистика REQUEST_URI соответствует / активам.И из-за этого правила я мог безопасно удалить отрицательное условие правила RewriteCond %{REQUEST_URI} !^/application/views/assets/

Чтобы узнать больше о флагах опций в mod_rewrite, смотрите этот документ: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewriteflags

...