htaccess重定向参数不起作用

时间:2013-04-15 13:30:05

标签: .htaccess mod-rewrite redirect

我正在努力使用Apache重写器。我需要做以下事情:

永久重定向:

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] 

干杯

肖恩

2 个答案:

答案 0 :(得分: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]

您无需将查询字符串附加到替换网址,因为这是自动完成的。

如果一切正常,您可以将R更改为R=301。从不在启用301的情况下进行测试,请参阅此回答Tips for debugging .htaccess rewrite rules了解详细信息。

答案 1 :(得分: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