为什么这个mod_rewrite表达式没有正确附加现有的查询字符串?

时间:2010-02-19 15:27:47

标签: apache mod-rewrite parameters

我是关于mod_rewrite的真正的新手所以请不要笑。我正在使用此工具进行测试:http://civilolydnad.se/projects/rewriterule/

基本上我想重写

http://hostname/spanish/whatever/

http://hostname/whatever/?lang=es

这是我能想到的最好的:

RewriteRule ^spanish/(.*)$ $1?lang=es [QSA,L,NC]
当请求的页面已经有参数时,

似乎除了。在那种情况下

http://hostname/spanish/gallery/photos/?page=2

被重写为

http://hostname/spanish/gallery/photos/?page=2?lang=es

任何人都可以帮助这个迷茫的新手吗?非常感谢你。

2 个答案:

答案 0 :(得分:1)

基本上,该工具具有误导性,因为当在真实服务器环境中使用时,该规则被证明是正确的。谢谢大家。

答案 1 :(得分:0)

这样的事情应该会有所帮助。

# Remove query strings from URL
RewriteCond %{THE_REQUEST} ^GET\ /.*\;.*\ HTTP/
RewriteCond %{QUERY_STRING} !^$
RewriteRule .* http://yourdomain.com%{REQUEST_URI}? [R=301,L]