【问题标题】:How to redirect a specific path to the same path without www in nginx如何在nginx中将特定路径重定向到没有www的相同路径
【发布时间】:2015-02-09 06:48:52
【问题描述】:

我在服务器配置过程中遇到了一个问题:我需要一个从 http://www.example.comhttp://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 给我一个错误,告诉我此代码无效。
实现这种重写的正确方法是什么?

【问题讨论】:

    标签: redirect nginx 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-27
      • 2016-10-07
      • 2022-01-11
      • 2017-06-20
      • 2017-07-05
      • 2016-06-02
      相关资源
      最近更新 更多