告诉mod_rewrite停止处理网址列表规则的最佳方法是什么?
通常你会做这样的事情:
RewriteCond %{REQUEST_URL} !^/foo
RewriteRule a b [L]
只有当有更多规则时,您才需要确保它们不再适用于^ / foo!
说什么是好方法:
RewriteCond %{REQUEST_URL} ^/foo
#no rewrite rules apply ever
答案 0 :(得分:1)
由于RewriteRule
本身可以匹配URI,因此您无需使用RewriteCond
。一个RewriteRule
重写的操作只是带有-
标记的[L]
连字符,应该可以防止匹配的路径被重写。
# First prevent /foo from rewriting later
# This rule matches /foo and takes *no action*
RewriteRule ^foo - [L]
# Other rules may follow...
# For example a generic rewrite in common use
RewriteCond %{REQUEST_FILENAME] !-f
RewriteCond %{REQUEST_FILENAME] !-d
RewriteCond (.*) index.php?id=$1 [L]
注意:我使用^foo
假设这将在.htaccess的上下文中使用。如果您在服务器级别使用它,则需要在/
中包含前导^/foo
。