【问题标题】:Nginx catch all domain, then add www if not presentNginx 捕获所有域,如果不存在则添加 www
【发布时间】:2023-03-23 01:38:01
【问题描述】:

此设置适用于共享单个 CMS 平台的多个域。它将允许任何域指向我的服务器 ip。

我可以使用 nginx server_name _;抓住所有。

但是如果 www 不存在,我想 301 重定向到 www(附加 www.infront)。如果有 www,那就没问题了。

我怎样才能做到这一点?

【问题讨论】:

    标签: php apache nginx url-rewriting server


    【解决方案1】:

    我已经通过使用以下 nginx 服务器配置解决了这个问题。

    server {
        listen 80 default_server;
        server_name ~^(?!www\.)(?<domain>.+)$;
        return 301 $scheme://www.$domain$request_uri;
    }
    
    server {
        listen 80;
        server_name ~^(?<domain>.+)$;
        root /home/wwwroot/web;
        ..
        ..
    }
    

    这将允许任何域和 301 重定向到 www。

    【讨论】:

      【解决方案2】:

      您可以捕获没有 www 并使用此重定向到 www

      server {
          listen       80;
          server_name  example.com;
          return       301 http://www.example.com$request_uri;
      }
      
      
      server {
        listen 80;
        server_name www.example.com;
        root /path/to/site;
        # Extra conf here.
      }
      

      【讨论】:

      • 那是域“example.com”。我需要的是如何捕获所有域,而不是在 server_name 指令中定义域。因为会有很多域。
      猜你喜欢
      • 2016-05-19
      • 2015-04-27
      • 1970-01-01
      • 2012-08-28
      • 2015-06-08
      • 1970-01-01
      • 2016-04-09
      • 1970-01-01
      • 2016-06-16
      相关资源
      最近更新 更多