我有一个令我困惑的问题。我的.htaccess文件中有两个规则,其中一个应该处理一个url路径的请求,另一个应该再次检查另一个路径。第二条规则比第一条更普遍。我期待第一个捕获它的实例和[L]停止规则处理,但一切都落到第二个规则并被定向到错误的页面。是否应该在适用的情况下应用第一条规则,然后停止规则处理?
以下是出现的两条规则:
## Path 1 ##
RewriteCond %{REQUEST_URI} ^directory/.*-([0-9]+)/?$
RewriteRule ^directory/.*-([0-9]+)/?$ directory/page.php?id=$1 [L]
## Path 2 ##
RewriteCond %{REQUEST_URI} ^.*-([0-9]+)/?$
RewriteRule ^.*-([0-9]+)/$ page.php?id=$1 [L]
也许我错过了一些明显的东西,但正如我所理解的那样,第一条规则(如果满足条件)将被应用,然后规则处理就会停止。
非常感谢任何帮助。
谢谢
答案 0 :(得分:2)
您实际上不需要RewriteCond
指令,因为RewriteRule
模式已经暗示了它们。这适用于我的测试:
## Path 1 ##
RewriteRule ^directory/.*-([0-9]+)/?$ /directory/page.php?id=$1 [L]
## Path 2 ##
RewriteRule ^.*-([0-9]+)/$ /page.php?id=$1 [L]
如果由于某种原因你还需要RewriteCond
指令,请记住%{REQUEST_URI}
实际上以斜杠开头,你必须匹配它。