[英]Redirect 301 / Rewrite conundrum
在我的網站上,用戶可以添加需要重定向的各種URL。
例如; 來自:domain.com/oldpage/36/
對此:domain.com/newpage/47/
它們被添加到.htaccess中,如下所示:
Redirect 301 /oldpage/36/ /new-page/47/
但是當訪問舊頁面時,他們得到了這個:
domain.com/newpage/47/?pid=36&pagename=oldpage
我很確定這些重寫規則會導致這種困境:
RewriteRule ([^.]+)/([0-9]+)/$ index.php?pid=$2&pagename=$1
RewriteRule ([^.]+)/([0-9]+)/([^.]+) index.php?pid=$2&pagename=$1&vars=$3
但是,mod_rewrite東西不是我的強項,所以我不知道如何修復它。
有任何想法嗎 ?
既然你已經在使用mod_rewrite,我想你也應該使用重寫來重定向
RewriteRule /oldpage/36/ /new-page/47/ [R=301]
這將“重寫”從舊到新的URL,並將瀏覽器重定向到狀態碼為301
新網址。 [R]
指令意味着重定向,這也會阻止其他規則處理,因此只有在使用新網址從broswer發送新請求時才會處理其他規則。
添加一個?
使Rewrite
不將查詢字符串添加到URL。
所以這應該工作:
Redirect 301 /oldpage/36/ /new-page/47/?
作為預防措施,您還可以將其添加到以下結尾:
RewriteRule ([^.]+)/([0-9]+)/$ index.php?pid=$2&pagename=$1?
RewriteRule ([^.]+)/([0-9]+)/([^.]+) index.php?pid=$2&pagename=$1&vars=$3?
但只有在他們需要的時候
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.