我一直坚持使用正则表达式。我想将foo=1
附加到所有网址。
对于以下网址:
www.xyz.com/
Rewrite:
www.xyz.com/?foo=1
对于以下网址:
www.xyz.com/?abc=2
Rewrite:
www.xyz.com/?abc=2&foo=1
答案 0 :(得分:3)
尝试将变量放在args之前,
location /whatever {
try_files $uri /index.php?foo=1&$args;
}
这样,如果args为空,你将拥有foo
,如果没有,它将被追加。
将$ args放在首位可能会使您的请求看起来像这样
www.xyz.com/?&foo=1
因为$args
是第一个而且它们是空的,我不确定这是否会得到正确处理。
请注意,如果您明确定义foo
,您输入的值将被nginx覆盖。
www.xyz.com/?foo=new_value&foo=1
foo=1
会覆盖新值,如果您想保护该值,那么将$args
放在最后会帮助您实现这一目标。
答案 1 :(得分:0)
下面的内容是您的第一个网址
([w]{3}\.[a-zA-Z0-9\-]+\.([a-zA-Z0-9]{3,4}|[a-zA-Z]{2}|[a-zA-Z0-9]{3,4}\.[a-zA-Z]{2}))/?
这是第二个网址
([w]{3}\.[a-zA-Z0-9\-]+\.([a-zA-Z0-9]{3,4}|[a-zA-Z]{2}|[a-zA-Z0-9]{3,4}\.[a-zA-Z]{2}))/?(\?\S*=\S*)
答案 2 :(得分:-1)
在Nginx中,rewrite
实现不,因为它仅在URI的路径部分上运行。相反,您必须修改$args
变量:
set $args $args&foo=1