我正在努力使用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]
干杯
肖恩
答案 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