Nginx $request_uri有重复的查询参数

weixin_38067090 2019-09-12 12:18:52
我发现nginx的$request_uri复制了查询参数. 我希望实现的目标是将裸域的任何请求重定向到www域.这是一个示例配置. server { listen 8080; server_name localhost; location / { if ($http_host !~* "^www\.") { rewrite (.*) http://www.$http_host$request_uri permanent; } } } 我得到的结果是: curl -I http://127.0.0.1:8080/pp/\?a\=b HTTP/1.1 301 Moved Permanently Server: nginx/1.6.2 Date: Thu, 22 Jan 2015 04:07:39 GMT Content-Type: text/html Content-Length: 184 Connection: keep-alive Location: http://www.127.0.0.1:8080/pp/?a=b?a=b 查询参数在结果中重复;我在这里错过了什么吗?
...全文
180 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38084861 2019-09-12
  • 打赏
  • 举报
回复
您看到的查询参数的复制是Nginx的预期行为.要更改此设置,您需要添加尾随?重写如下: server { listen 8080; server_name localhost; location / { if ($http_host !~* "^www\.") { rewrite (.*) http://www.$http_host$request_uri? permanent; } } } See Documentation Here. If a replacement string includes the new request arguments, the previous request arguments are appended after them. If this is undesired, putting a question mark at the end of a replacement string avoids having them appended, for example: rewrite ^/users/(.*)$/show?user=$1? last; 但是,Aleksey Deryagin给出的配置对于您所需的重定向类型来说是更好,更有效的选项,因为无论是否需要,每个请求都将由原始配置中的if块进行评估.

430

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧