首页 > 解决方案 > NGINX 重定向,查询字符串被忽略

问题描述

我添加了大约 30 个重定向,其中 90% 是直接的 URL,但是有一些具有查询字符串,例如

.com/?page_id=2966
.com/?page_id=2965
.com/?page_id=2964

所有其他重定向都可以正常工作,但是这些重定向都不能使用以下重写规则:

rewrite ^/?page_id=2966$ /sustainable-travel? permanent;
rewrite ^/?page_id=2965$ /car-sharing? permanent;
rewrite ^/?page_id=2964$ /eco-driving? permanent;

我们已经重新加载并重新启动了服务器,但没有任何运气 - 我们应该在配置中做一些特别的事情来捕获这些吗?

谢谢

标签: nginxredirectquery-string

解决方案


之后的任何内容?都是查询字符串,而不是rewrite(和其他)指令中使用的规范化 URI 的一部分。

典型的解决方案是使用map指令将查询字符串参数映射到 URI,或者在 Nginx 级别不进行这种类型的重定向,并使用像Retour * 这样的插件来处理重定向。

  • 免责声明:我是 Retour 的作者。

推荐阅读