mod_rewrite的语法可以免除URL

时间:2015-03-17 22:17:41

标签: apache mod-rewrite

告诉mod_rewrite停止处理网址列表规则的最佳方法是什么?

通常你会做这样的事情:

RewriteCond %{REQUEST_URL} !^/foo
RewriteRule a b [L]

只有当有更多规则时,您才需要确保它们不再适用于^ / foo!

说什么是好方法:

RewriteCond %{REQUEST_URL} ^/foo
#no rewrite rules apply ever

1 个答案:

答案 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