我正在尝试根据传递的参数重定向页面。
我想重定向
将 ^/join_trial 重写为 /test? permanent;
和
重写 ^/join_trial?discount=free(.*) /test2? 永久;
第一个有效,但第二个无效。看来 nginx 不支持 (.*) 正则表达式。
对于第一个问题,以下情况可行。
/加入试用?测试=aaaaa
/加入试用?923849=aaa
基本上,你可以在后面放任何东西/加入试用。
我希望在用户添加时进行重定向?折扣=免费(这里什么都可以)。
使用 nginx 可以实现这个吗?
答案1
你根本无法匹配查询字符串rewrite
。因此您需要直接检查该参数。
例如:
if ($arg_discount ~ ^free) {
rewrite ^/join_trial /test2? permanent;
}
rewrite ^/join_trial /test? permanent;
我怀疑你真的不要想要发送 301 重定向,因为用户随后会在地址栏中看到/test
或。也许您真的想仅在内部处理这些 URL?在这种情况下,请更改为。/test2
permanent
last