2011-02-03 72 views
2

我想使用mod_rewrite将参数追加到查询字符串的末尾。我明白我可以使用[QSA]标志来做到这一点。使用mod_rewrite将查询字符串追加到参数

但是,如果查询字符串中不存在参数,我只需要追加参数。因此,如果查询字符串是:

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文件,可以做到这一点?

回答

8

编辑:测试并修改了它,现在它为我工作

我假设你想添加一个默认权重参数,如果没有重量可言:

RewriteEngine on 
RewriteBase/
RewriteCond %{QUERY_STRING} !weight= 
RewriteRule ^script.php  script.php?weight=heavy [R,L,QSA] 

这是esentially相同什么@co reyward回答,但更具体一点。 (R标志,使变化可见,并且重量参数不必很重。)

希望这有助于!

+0

嗨,谢谢你的代码澄清。我将它添加到我的.htaccess中,但不幸的是我无法让它工作!我有mod_rewrite启用..干杯。 – Matt 2011-02-03 15:44:02

5

这是一件很奇怪的事情。就好像你正在为你的系统设置一个默认值,这是一个非常标准的事情。问题在于,在您真正配置Apache的VHost定义或.htaccess文件中设置该默认值是不可维护和尴尬的。

我建议不要这样做,但是这是一个快速和肮脏的方式做你要找的内容:

RewriteCond %{QUERY_STRING} !weight=heavy 
RewriteRule /script.php /script.php?weight=heavy [QSA] 
+0

嗨,谢谢你的回答。你是对的,我正在寻找一个快速和肮脏的解决方案。我不能让你的代码工作不幸,但我可以看到你要去哪里... – Matt 2011-02-03 15:41:27

相关问题