0

我正在为 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] 

干杯

肖恩

4

2 回答 2

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,因为这是自动完成的。

当一切按预期工作时,您可以更改RR=301. 永远不要在启用的情况下进行测试,有关详细信息301,请参阅此答案提示调试 .htaccess 重写规则

于 2013-04-15T13:56:56.253 回答
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

于 2013-04-15T13:52:50.273 回答