重写规则循环。如何停止应用规则

时间:2012-11-30 16:07:12

标签: .htaccess mod-rewrite url-rewriting rewrite

我有一个.htaccess文件将博客帖子网址重定向到/ blog / 2012/11/30 / this-post到/blog/post.php?id=this-post。工作正常,直到我在它下面应用第二个规则,这也是一个匹配。此规则设置为采用路径格式化的网址,例如/ this / is / a / pageid并重定向到/page.php?id=pageid。它不关心路径有多长,它只是使用路径中的最后一个目录作为id。不幸的是,这条规则匹配所有内容,我不确定如何在第一场比赛后停止重定向。这是我的.htacess

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^blog/([0-9]+)/([0-9]+)/([0-9]+)/([A-Za-z0-9-]+)$ /blog/post.php?id=$4 [L]
RewriteRule ([^/]+)/?$ /page.php?id=$1 [L]

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以在第一次重定向后添加一个可选的查询参数,并将其与查询字符串上的简单重写条件相结合,以检查该参数是否存在,请尝试以下操作:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^blog/([0-9]+)/([0-9]+)/([0-9]+)/([A-Za-z0-9-]+)$ /blog/post.php?id=$4 [L]

RewriteCond %{QUERY_STRING} !^(.*&)?r=0(&.*)?$
RewriteRule ([^/]+)/?$ /page.php?id=$1&r=0 [L]