2015-12-24 41 views
2

12月的第一週我的公司把他們的新網站在線。現在我們知道我們必須重新定向那些沒有放回到新網站的舊鏈接,所以我們做到了。如何301重定向很多舊鏈接

但現在我面臨一個新的問題,這使我頭痛.. 當我檢查在谷歌網站管理員工具,我斷開的鏈接,我每天獲得具有下列URL結構大約50死鏈接:

http://www.example.nl/portfolio/item/client/1 

URL末尾的1會變爲10.因此,我有10個鏈接,用於在.htaccess中必須重定向的特定投資組合項目。新的URL結構如下:

http://www.example.nl/portfolio/client 

現在,我已經在我的.htaccess 300-400 301重定向,但感覺就像我在這裏做得不對。

這裏有沒有人有一個更有效的方法讓我的鏈接重定向?需要

+0

因此這兩個網站都有相同的結構或什麼? 即oldsite.com/item1/page == newsite.com/item1/page –

+0

嘿,沒有。 舊的網站結構:oldsite.nl/portfolio/item/portfolioitem 新的網站結構:oldsite.nl/portfolio/portfolioitem –

+0

沒有其他更改對 –

回答

1

嘗試在文檔根目錄的.htaccess中,與您其他重定向:

RewriteRule ^(portfolio)/item/([-a-z]+)/\d+ /$1/$2 [R=302,L] 

這會將/portfolio/item/<client>/<num>重定向到/portfolio/<client>。其中<client><num>是可變的。它還假定<client>只包含小寫字母az和連字符(-)。

我假設你已經在使用mod_rewrite(即RewriteRule)作爲你的其他重定向。 (不推薦混合mod_alias中(即RedirectRedirectMatch)和mod_rewrite的重定向。)

更改302(臨時)於301(永久)當你確定它工作正常。

+0

哇謝謝! 1個問題,我的客戶端變量也有一個 - 在他們,分開名稱,例如:客戶名稱 - 這裏 我如何得到你剛剛發佈的代碼? –

+0

在這種情況下,只需將正則表達式'[az] +'更改爲'[-az] +'(連字符需要在字符類的開始或結尾以匹配文字連字符)。更新了我的答案。 – MrWhite

0

按你的URL結構重定向的最好辦法是在htaccess的重定向具有reg表達做

RedirectMatch 301 ^/item/.* http://www.example.nl/portfolio/ 
+0

舊網站和新網站位於同一個域 - 域沒有改變,只是URL結構。 (但是,這也將所有請求重定向到文檔根目錄。) – MrWhite