如何在nginx中将特定路径重定向到没有www的相同路径
Posted
技术标签:
【中文标题】如何在nginx中将特定路径重定向到没有www的相同路径【英文标题】:How to redirect a specific path to the same path without www in nginx 【发布时间】:2015-02-09 06:48:52 【问题描述】:我在服务器配置过程中遇到了一个问题:我需要一个从 http://www.example.com 到 http://example.com 的 301 重定向,只是针对一个特定的 URL 别名 - 例如 /partners。
预期输出 - http://www.example.com/partners/stuff -> http://example.com/partners/stuff。
我已经尝试将以下代码添加到虚拟主机:
server
server_name http://www.example.com/partners;
return 301 $scheme://example.com/partners;
但 vhosts 给我一个错误,告诉我此代码无效。 实现这种重写的正确方法是什么?
【问题讨论】:
【参考方案1】:server_name 仅用于域。我可以建议你 2 个解决方案。
在服务器之间复制配置。这是nginx作者推荐的最佳方案。
server
server_name example.com;
include example.com.conf;
server
server_name www.example.com;
include example.com.conf;
location /partners/
return 301 $scheme://example.com$request_uri;
或者使用 if。性能不佳的解决方案
server
server_name .example.com;
...
location /partners/
if ($host = "www.example.com")
return 301 $scheme://example.com$request_uri;
http://wiki.nginx.org/IfIsEvil
http://wiki.nginx.org/Pitfalls#Server_Name
【讨论】:
以上是关于如何在nginx中将特定路径重定向到没有www的相同路径的主要内容,如果未能解决你的问题,请参考以下文章
如何在 nginx docker elastic beanstalk中将http重定向到https