2015-10-15 142 views
0

我正在清理一些舊的東西,我需要做一些301重定向。Seo 301絕對url重定向,Prestashop

例如:

我試圖與htaccess的:

RedirectMatch 301 /product.asp?product=371&sub=0&page=1 /category/test 

但上面的代碼將無法正常工作,它顯示404頁面並忽略我剛剛做出的重定向。請注意,product.asp不作爲文件存在!

但是,如果我使用:

RedirectMatch 301 /product.asp /category/test/ 

它的工作原理排序了,但我現在不能做重定向,基於查詢字符串爲特定的文件。

有什麼建議嗎?順便說一句我正在使用Prestashop =) 最好,西蒙

回答

1

您無法使用RedirectMatch指令匹配查詢字符串。使用mod_rewrite規則,而:

RewriteEngine On 

RewriteCond %{QUERY_STRING} product=371&sub=0&page=1 
RewriteRule ^product\.asp$ /category/test/? [L,NC,R=301] 

?的目標是剝離現有的查詢字符串。

+0

我明白了你的觀點。什麼是解決這個問題的首選方法?不幸的是,我無法讓你的代碼工作。它顯示404:/ Btw,因爲我看到你的代碼正在被重寫,而不是重定向,這是真的嗎? :) – simon

+0

同樣的規則在我的Apache上適用於我。你還有其他規則嗎?如果那麼確保將此規則作爲第一條規則。 – anubhava

+1

@simond不,這不是真的。它正在重定向。這就是'R = 301'告訴它做的。和你在之前的嘗試中使用301一樣。 –

1

mod_alias設計用於處理簡單的URL操作任務。對於更復雜的任務(如操作查詢字符串),請使用mod_rewrite提供的工具。

here

剛剛從@anubhava回答到的Prestashop的.htaccess添加規則,它會工作。最好在# ~~start~~之前這樣做,你會在文件中看到通知。