2016-09-30 40 views
0

我以前的重新編寫規則如下做工精細:如何重定向301已經重新編寫

RewriteCond %{REQUEST_FILENAME} !-f 

RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^product-detail/([\w-.]+)/?$ product-detail.php?e=$1 [NC,L] 

這是mysite.com/product-detail/laptop

在搜索,5000個產品結果已經存在。 我要301重定向到新的文件夾

mysite.com/electronics/product-detail/laptop

我不希望谷歌摧毀我的結果。請幫幫我。

回答

0

我相信它應該是這樣的:

RewriteCond %{REQUEST_FILENAME} !-f 

RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^product-detail/([\w-.]+)/?$ /electronics/product-detail/$1 [NC,R=301,L] 
RewriteRule ^electronics/product-detail/([\w-.]+)/?$ product-detail.php?e=$1 [NC,L] 

你的第一個,第二個規則是不變的。然後,您將所有舊網址轉換爲新網址,並使用重定向代碼301.然後,將新網址處理爲您的腳本,就像舊網址一樣。

我在這裏假設您的路徑前綴電子是一個常數,即它不依賴於產品類別。如果是這樣,您將不得不在腳本中進行重定向,因爲Apache無法猜測產品的類別(例如,如果從/ product-detail/hugo-boss重定向到=>/parfume/product-細節/雨果老闆)。

+0

親愛的。我已經按照你的建議嘗試了這些規則, RewriteRule^electronics/product-detail /([\ w - 。+] /?$ product-detail.php?e = $ 1 [NC,L] 工作正常。 但是,當乾燥機細節被拍攝時,301重定向規則被重定向到下面; mysite.com/electronics/product-detail/dryer; 它重定向到; mysite.com/home3/kproducts/public_html/electronics/product-detail/dryer 它重定向到託管的物理文件夾。 .. 謝謝你的幫助。 –

+0

嘗試在開頭添加一個斜槓: '/ electronics/product-detail/$ 1 [NC,R = 301,L]' –

+0

非常感謝,它的工作。 –