如何在nginx中将特定路径重定向到没有www的相同路径

时间:2014-12-10 22:10:01

标签: redirect nginx vhosts

我在服务器配置期间遇到了一个问题:我需要从http://www.example.comhttp://example.com的301重定向,只需要一个特定的网址别名 - 比如/ partners。

预期输出-http://www.example.com/partners/stuff - > http:// example.com/partners/stuff。

我已经尝试将以下代码添加到vhosts中:

server { 
        server_name http://www.example.com/partners; 
        return 301 $scheme://example.com/partners;
}

但是vhosts给我一个错误,告诉我这段代码无效 实现这种重写的正确方法是什么?

1 个答案:

答案 0 :(得分: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