0

我有一个 .htaccess 文件,将 /blog/2012/11/30/this-post 之类的博客文章 URL 重定向到 /blog/post.php?id=this-post。工作正常,直到我在它下面应用第二条规则,它也是匹配的。此规则设置为采用路径格式的 url,如 /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]

在此先感谢您的帮助。

4

1 回答 1

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]
于 2012-11-30T16:17:58.993 回答