我想使用mod_rewrite将参数附加到查询字符串的末尾。我知道我可以使用[QSA]标志来做到这一点。
但是,如果查询字符串中不存在参数,我希望仅附加参数。所以,如果查询字符串是:
http://www.mysite.com/script.php?colour=red&size=large
我希望将上述网址重定向到
http://www.mysite.com/script.php?colour=red&size=large&weight=heavy
只有当这个特定参数不存在时,weight=heavy
才附加到查询字符串的末尾!如果特定参数已在URL中,则不需要重定向。
任何人都可以建议将代码放入我的.htacess文件中吗?
答案 0 :(得分:8)
编辑:测试并修改了它,现在它适用于我
我假设你想要在没有重量的情况下添加默认的权重参数:
RewriteEngine on
RewriteBase /
RewriteCond %{QUERY_STRING} !weight=
RewriteRule ^script.php script.php?weight=heavy [R,L,QSA]
这与@coreyward所回答的基本相同,但更具体一点。 (R标志,使变化可见,重量参数不必很重。)
希望这有帮助!
答案 1 :(得分:5)
这是一件非常奇怪的事情。就好像你正在为你的系统设置一个默认值,这是一个非常标准的事情。问题是在你的VHost定义或.htaccess文件中设置默认值是不可维护和笨拙的。
我建议不要这样做,但这是一种快速而肮脏的方式来做你想要的事情:
RewriteCond %{QUERY_STRING} !weight=heavy
RewriteRule /script.php /script.php?weight=heavy [QSA]