2010-03-07 71 views
1

我使用.htaccess重定向301來重定向一個URL,然後將所有查詢字符串元素附加到最後,從而使我在Google中索引一些URL爲/store/product/?d=department&s=section&p=productApache Mod_Rewrite將查詢字符串轉換爲標準url

我已修復重定向通過使用RewriteRule而不是追加查詢字符串,但我卡住試圖重寫舊的重定向的URL與查詢字符串回原始URL(因爲它們看起來像現在Google有兩個不同的網址)。

我設法得到了一個RewriteRule工種,在/store/product/xxxxx重定向到/store/product/,因爲它應該,它似乎並不適用於整個查詢字符串。

我一直使用的是:

RewriteRule ^store/product/([a-zA-Z0-9\-_\?=&]+)$ http://www.example.com/store/product/ [NC,R=301,L] 

RewriteRule ^store/product/\?d=department&s=section&p=product$ http://www.example.com/store/product/ [NC,R=301,L] 

希望所有有道理!

非常感謝

回答

1
RewriteCond %{QUERY_STRING} !^$ 
RewriteRule ^store/product/.*$ http://www.example.com/store/product/? [NC,R=301,L] 
+0

您好,這似乎給我一個重寫循環,有沒有什麼辦法使重寫只有當查詢字符串中有明確的東西? – stukerr 2010-03-07 18:35:28

+0

絕對。固定。 – 2010-03-07 18:40:14

+0

好東西!非常感謝 – stukerr 2010-03-07 18:46:18

0

您需要在您的替換來指定一個空查詢沒有原來的一個自動追加到新網址:

RewriteRule ^store/product/[a-zA-Z0-9\-_=&]+$ http://www.example.com/store/product/? [NC,R=301,L] 

注意?在結束替代網址。