Nginx捕获所有域名,然后添加www(如果不存在)

时间:2015-11-03 16:05:26

标签: php apache nginx url-rewriting server

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

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

但是如果没有www,我想301重定向到www(附加www。infront)。如果存在www,则没关系。

我怎样才能实现这个目标?

2 个答案:

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

答案 1 :(得分:0)

您可以在没有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.
}