2013-04-15 73 views
0

我正在努力與Apache重寫。我需要做到以下幾點:htaccess重定向參數不工作

永久重定向:

http://domain.com/folder/viewer/data/settings.xml?prevent_cache=4760

http://domain.com/siteid/includes/themes/siteid/swfs/viewer/data/settings.xml?prevent_cache=4760

我有下面的代碼,它的工作原理沒有URL參數,但我可以似乎沒有讓它與參數一起工作。我錯過了什麼嗎?

RewriteCond %{QUERY_STRING} ^prevent_cache=([0-9]*)$ 
RewriteRule ^/folder/viewer/data/settings.xml$ http://domain.com/siteid/includes/themes/siteid/swfs/viewer/data/settings.xml [R=301,L] 

乾杯

肖恩

回答

1

唯一的錯誤我所看到的,是在RewriteRule模式中的主導斜槓/。這應該是

RewriteCond %{QUERY_STRING} ^prevent_cache=[0-9]*$ 
RewriteRule ^folder/viewer/data/settings.xml$ /siteid/includes/themes/siteid/swfs/viewer/data/settings.xml [R,L] 

您不需要將查詢字符串追加到替換URL,因爲這是自動完成的。

當一切正常如您所料,您可以將R更改爲R=301。切勿使用啓用301的測試,詳情請參閱此答案Tips for debugging .htaccess rewrite rules

+0

完美!謝謝你的幫助 –

0

我可以。下面是重寫條件和規則,你正在尋找:

# once per htaccess file 
RewriteEngine on 

RewriteCond %{QUERY_STRING} prevent_cache=([0-9]*) 
RewriteRule ^folder/viewer/data/settings.xml http://domain.com/siteid/includes/themes/siteid/swfs/viewer/data/settings.xml?prevent_cache=%1 [R=301,L] 

但請考慮這個答案對[R = 301]標誌:https://stackoverflow.com/a/15999177/2007055