2012-01-25 94 views
0

我試圖通過我的.htaccess重定向頁面,但它似乎並沒有工作。將特定的動態網址重定向到更漂亮/簡單的網址?

舊頁:5 /達因/ Q =客戶%20reference & F = 1,1,1,1,1,1 & C = 10,10,10,10,10,10 & S = 1,1 ,1,1,1,1,1 & ST = 1

新頁:/客戶參考/

認爲這將是如此簡單:

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^q=customer(?:[\ +]|%20)reference&f=1$ [NC] 
RewriteRule ^dyn/$ /1? [R=301,NE,NC,L] 

但事實並非如此似乎工作。是因爲原始網頁的動態網址嗎?

此外,我還嘗試了在.htaccess中直301重定向。這似乎並沒有工作,要麼:

redirect 301 /dyn/?q=customer%20reference&f=1,1,1,1,1,1&c=10,10,10,10,10,10&s=1,1,1,1,1,1,1&st=1 /customer-references/ 

而另一個失敗的嘗試是這樣的:

RewriteCond %{QUERY_STRING} ^customer%20reference&f=1,1,1,1,1,1&c=10,10,10,10,10,10&s=1,1,1,1,1,1,1&st=1$ 
RewriteRule ^$ http://www.domain.com/customer-references/? [R=301,L] 

然後,我試圖在這個變化:

RewriteCond %{HTTP_HOST} ^domain.com 
RewriteCond %{QUERY_STRING} ^q=customer%20reference* [NC] 
RewriteRule ^(.*)$ http://www.domain.com/customer-references/ [R=301,L] 

我需要逃跑out&符號或空間(%20)?

回答

1

轉義%&沒有必要,因爲它們不是特殊字符。

以下適用於我。將.htaccess文件放在網站的根目錄中。

RewriteEngine on 
RewriteBase/

# match/dyn/?q=customer%20reference&f=[ANYTHING] 
RewriteCond %{QUERY_STRING} ^q=customer%20reference&f= [NC] 
RewriteRule ^dyn/$ /customer-references/? [L,R=301] 
+0

嗯,似乎沒有工作。我不需要重新啓動Apache爲了這個被拾起我做? – Keefer

+0

@Keefer它可能你的.htaccess沒有啓用。在你的.htaccess中加入一些垃圾,例如'asdfasdfwerwer',看看是否會給你一個500錯誤。如果是的話,請參閱http://stackoverflow.com/questions/8990378/why-rewriterule-in-htaccess-does-not-have-effect解決方案 –

+0

。htaccess絕對啓用並正在使用。我有幾個主動301重定向,一些緩存控制的東西,等等,這一切工作正常。 – Keefer