2014-09-26 112 views
0

我正在使用;htaccess 301使用RewriteRule重定向

RewriteRule ^link1/([^/]*)/([^/]*)/link2-/([^/]*)$ link.php?var1=$1&var2=$2&var3=$3 

上週我已經把我的網站地圖,以谷歌,但我意識到,我已經使用的link2*代替link2-,所以我需要的所有目錄link2-重定向到link2*與301

http://www.domain.com/link1/link2-/var1/var2/var3 

應該用301重定向到

http://www.domain.com/link1/link2*/var1/var2/var3 

現在我們的網站都列出了link2-和link2 *因爲我們知道goo GLE不喜歡重複的頁面。

當我做

RedirectMatch 301 /link1/link2-/var http://www.domain.com/link1/link2*/var 

它重定向到

http://www.domain.com/link1/link2*?var1=link2&var1=var2&var3 

這意味着重定向與改寫混合...

我知道這是一個有點複雜,但我真的需要幫助。

回答

0

在這種情況下,您不想使用RedirectMatch,因爲它是一個不同的模塊(mod_alias),它會沿着你所有的mod_rewrite規則應用並導致衝突。使用mod_rewrite來代替:

RewriteRule ^(.*)/link2-(.*)$ /$1/link2*$2 [L,R=301] 

*只是最終得到通過瀏覽器進行編碼,雖然,它會看起來像:%2A

+0

這是做同樣的事情與其他重寫混合; 鏈接應該是; http://www.domain.com/link1/link2*/var1/var2/2 但在此代碼後,它成爲; http://www.domain.com/list2*/var1/var2/var3?var1=C-&var2=var3&var=2 – 2014-09-27 08:48:24

0

我用頭(「HTTP/1.1 301永久移動」 );與PHP而不是htaccess希望它不會是一個問題與谷歌.. Thx