0

我有一個網站曾經使用php「標準」地址,例如index.php?id=10。 現在我已經配置mod_rewrite有更好的網址,所以我加了規則在Apache中添加重寫規則後刪除Google鏈接

RewriteRule ^/([0-9]+)/?$ /index.php?id=$1 [QSA] 

因此,每當有人將亮相/10他或她將被重定向到index.php?id=10

由於重定向與舊地址完全相同,因此Google會繼續以舊的php風格的網址爲結果,並且當您在Google中執行搜索時,某些結果現在會重複。

我訂閱了谷歌網站管理員工具併爲該網站添加了一個網站地圖,只留下rewrite地址,但是在兩個多月之後,舊的網址仍然出現。有沒有辦法將它們從Google中刪除?

非常感謝!

回答

0

將傳入的舊式URL重定向到返回404的網站,Google將刪除它們。只要您保持內部重寫(並且不要再次重寫resulkts,或者通過其他人使用L標誌之後的規則),傳入的新鏈接將不會受到影響。

這看起來是這樣的(未經測試,但你至少應該得到的想法):

RewriteRule ^/([0-9]+)/?$ /index.php?id=$1 [QSA,L] 
RewriteRule ^/index.php?id=([0-9])$ - [R=404,L] 

發送永久重定向狀態代碼301(加上位置頭)重定向到新的網址也應該工作,在這種情況下谷歌不會remnove條目,但更正的URL。

RewriteRule ^/([0-9]+)/?$ /index.php?id=$1 [QSA,L] 
RewriteRule ^/index.php?id=([0-9])$ /$1 [R=301,L] 

你應該,但是,保留舊樣式的URL功能,無論如何,因爲Cool URIs don't change

+0

我該如何重定向它們? Apache正在將它們轉變爲「php」風格。我可以直接使用另一個重寫規則嗎?確切地說,是 –

+0

。重定向在內部完成(除非您使用R標誌或FQDN另行指定),因此瀏覽器從不會看到您重寫請求的URL。因此,它永遠不會請求舊的stlye URL,除非某個用戶(或bot)直接請求它們。因此,只重定向舊網址是安全的。我會編輯一些建議給我的答案,給我一點。 –