我正在重写这个
http://myweb.com/post/5/title-of-the-post
(新网址)
到
http://myweb.com/post.php?id=5
(旧网址)
我通过以下方式实现了这一目标:
RewriteEngine On
#Options +FollowSymLinks
RewriteRule ^post/(.+)/(.+) post.php?id=$2
但是,如果我尝试输入旧网址仍然可以,那么我怎样才能重定向到新网址而不是以循环结束?
答案 0 :(得分:1)
首先,添加此规则:
RewriteCond %{QUERY_STRING} id=([0-9]+)
RewriteRule ^post\.php$ post/%1/article [R=301,L]
这将强制立即重定向,并且不会处理任何进一步的规则。请求发布/什么/永远不符合此规则并跳过。请注意,您必须创建通用文章标题,因为.htaccess无法知道要使用的标题。
接下来,添加此规则:
RewriteRule ^post/([0-9]+)/(.*)$ post.php?id=$1 [L]
对post.php的请求已经被捕获,因此他们不会到达此行。这将按预期进行重定向,你不应该有无限循环。