重写友好的旧网址,并将旧网址重定向到友好

时间:2012-12-13 16:03:37

标签: .htaccess redirect rewrite friendly-url

我正在重写这个

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

但是,如果我尝试输入旧网址仍然可以,那么我怎样才能重定向到新网址而不是以循环结束?

1 个答案:

答案 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的请求已经被捕获,因此他们不会到达此行。这将按预期进行重定向,你不应该有无限循环。