2012-12-13 112 views
0

我rewritting这个Rewritre友好旧的URL和重定向旧网址友好

http://myweb.com/post/5/title-of-the-post(新URL)

http://myweb.com/post.php?id=5(旧的URL)

我已经实现了这个通过:

RewriteEngine On 
#Options +FollowSymLinks 
RewriteRule ^post/(.+)/(.+) post.php?id=$2 

但如果我尝试进入th旧的url仍然是可能的,那么我怎样才能将重定向到新的而不是最终成为一个循环?

+0

¿新URL的资源在哪里,仍然是'http://myweb.com/post.php?id = 5'? –

+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中会上面已经抓住了,所以他们也不会达到这一行。这将按照预期进行重定向,并且您不应该有无限循环。