使用mod_rewrite将参数附加到查询字符串

Mat*_*att 3 php apache .htaccess mod-rewrite

我想使用mod_rewrite将参数附加到查询字符串的末尾.我知道我可以使用[QSA]标志来做到这一点.

但是,如果查询字符串中不存在参数,我希望仅附加参数.所以,如果查询字符串是:

http://www.mysite.com/script.php?colour=red&size=large
Run Code Online (Sandbox Code Playgroud)

我想将上面的URL重定向到

http://www.mysite.com/script.php?colour=red&size=large&weight=heavy
Run Code Online (Sandbox Code Playgroud)

weight=heavy被附加到查询字符串的结尾仅当此特定参数是不存在摆在首位!如果特定参数已在URL中,则不需要重定向.

任何人都可以建议我的.htacess文件中的代码可以执行此操作吗?

aor*_*sik 9

编辑:测试和修改它,现在它适用于我

我假设你想要在没有重量的情况下添加默认的权重参数:

RewriteEngine on
RewriteBase /
RewriteCond %{QUERY_STRING} !weight=
RewriteRule ^script.php     script.php?weight=heavy [R,L,QSA]
Run Code Online (Sandbox Code Playgroud)

这与@coreyward所回答的基本相同,但更具体一点.(R标志,使变化可见,重量参数不必很重.)

希望这可以帮助!


cor*_*ard 5

这是一件非常奇怪的事情.就好像你正在为你的系统设置一个默认值,这是一个非常标准的事情.问题是在你的VHost定义或.htaccess文件中设置默认值是不可维护和笨拙的.

我建议不要这样做,但这是一种快速而肮脏的方式来做你想要的:

RewriteCond %{QUERY_STRING} !weight=heavy
RewriteRule /script.php /script.php?weight=heavy [QSA]
Run Code Online (Sandbox Code Playgroud)