2014-01-14 47 views
1

所以我一直在努力尋找匹配這個重寫的規則。我在一個客戶網站上工作,這是一個重複標題標籤數量的噩夢。我已經設法解決其中大部分通過強制正斜槓,重定向非www。到www。版本並且不允許抓取網站的https版本。Apache重寫問題。無法找出查詢字符串

我現在遇到的問題。我有超過1000個重複內容的網址,每個產品都有兩個具有完全相同內容的不同網址。一個例子是:

http://www.example.co.uk/product/widget1/ 
http://www.example.co.uk/widget1/ 
http://www.example.co.uk/product/widget2/ 
http://www.example.co.uk/widget2/ 

現在以下網址具有相同的內容:

http://www.example.co.uk/product/widget1/ 
http://www.example.co.uk/widget1/ 

我想重定向包含的URL版本「/產品/」沒有任何URL「/產品/」如果這有意義的話,在URL中。我真的不知道從哪裏開始,並會真正感謝幫助。

預先感謝

編輯:建議的規則:

RewriteEngine敘述在 重寫規則^ /產物/(.*)$/$ 1 [R = 301]

不起作用。它可能是衝突的。這些是其他規則:

RewriteEngine On 
RewriteCond %{QUERY_STRING} .+ 
RewriteRule ^(.*)$ /$1? [R=301,L] 
RewriteRule ^/product/(.*)$ /$1 [R=301] 
RewriteCond %{HTTP_HOST} ^example\.co [NC] 
RewriteRule (.*) http://www.example.co.uk/$1 [L,R=301] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)([^/])$  /$1$2/ [L,R=301] 

我不知道這裏是否有任何衝突。請幫助

回答

1

有完整的.htaccess像這樣:

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^example\.co [NC] 
RewriteRule (.*) http://www.example.co.uk/$1? [L,R=301] 

RewriteCond %{QUERY_STRING} .+ 
RewriteRule ^(.*)$ /$1? [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+?[^/])$ /$1/ [L,R=301] 

RewriteRule ^product/([^/]+)/?$ /$1/ [R=301,L] 
+0

謝謝,這工作完美。我如何給你「謝謝」或「代表」的幫助? – user3194329

+0

只需點擊左側的刻度線,即可將此答案標記爲已接受。 – anubhava

1

假設URL始終開始與產品,這應該工作:

RewriteEngine On 
RewriteRule ^/product/(.*)$ /$1 [R=301] 

它需要在你的主站點的conf去或的.htaccess

+0

你測試過了嗎? – anubhava

+0

不,這是一個非常簡單的規則 - 讓我知道,如果由於某種原因,它是失敗的... – arco444