.htaccess rewriterule无法正常工作

时间:2014-07-18 10:37:48

标签: apache .htaccess file mod-rewrite

我试图屏蔽看起来像这样的网址:

http://example.com/test-test-test-test/item.swf?id=122

...在传递GET参数时显示此URL的内容:

http://example.com/images/item.swf?id=122

这是因为item.swf目录中实际上不存在test-test-test-test。我目前正在使用它,但它不起作用:

RewriteRule ^test-test-test-test/item\.swf\?id=([0-9]+)$ images/item\.swf\?id=$1 [L]

此.htaccess文件位于我的根文件夹中。

2 个答案:

答案 0 :(得分:1)

请改为尝试:

RewriteCond %{QUERY_STRING} id=([0-9]+)
RewriteRule ^test-test-test-test/item\.swf /images/item.swf?id=%1 [R,L]

答案 1 :(得分:0)

RewriteRule正则表达式不在查询参数上,为此,您可以使用[QSA]标志:

当替换URI包含查询字符串时,RewriteRule的默认行为是丢弃现有的查询字符串,并将其替换为新生成的查询字符串。使用[QSA]标志会导致查询字符串为组合

示例:

RewriteRule ^test-test-test-test/item\.swf$ images/item.swf [L,QSA]

希望它有所帮助。

相关问题