2012-12-13 144 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中會上面已經抓住了,所以他們也不會達到這一行。這將按照預期進行重定向,並且您不應該有無限循環。