【发布时间】:2011-04-28 13:30:35
【问题描述】:
我正在使用 Apache2 和 mod_rewrite 来隐藏我的查询字符串。这些是有问题的规则。
RewriteCond %{QUERY_STRING} ^query=(.*)$
RewriteRule (.*) /search/%1 [R=301,L]
RewriteRule ^search\/?$ /search/?query=test [R=301,L]
当我访问/search(或/search/)时,我被正确重定向到/search/?query=test(根据最后一条规则)
从那里,RewriteCond 和 RewriteRule 应该启动并将我重定向到 /search/test,对吗?据我了解,我的第一个RewriteRule 中的%1 对应于RewriteCond 中的(.*),它应该包含test。
但是,实际发生的是我被重定向到/search/test/?query=test。因此,该规则有效,但由于某种原因附加了查询字符串。 是否以某种方式/某处自动添加了 QSA 选项?
然后我陷入了重定向到/search/test?query=test 的无限循环,因为第一个RewriteCond 和RewriteRule 再次启动,一次又一次……
我做错了什么?!
谢谢!
【问题讨论】:
标签: mod-rewrite apache2 query-string