Nginx 捕获所有域,如果不存在则添加 www
Nginx catch all domain, then add www if not present
此设置适用于共享单个 CMS 平台的多个域。它将允许任何域指向我的服务器 ip。
我会用nginx server_name _;抓住一切。
但是如果 www 不存在,我想 301 重定向到 www(附加 www.infront)。如果有 www 就没问题。
我怎样才能做到这一点?
您可以捕获没有 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.
}
我已经通过使用以下 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。
此设置适用于共享单个 CMS 平台的多个域。它将允许任何域指向我的服务器 ip。
我会用nginx server_name _;抓住一切。
但是如果 www 不存在,我想 301 重定向到 www(附加 www.infront)。如果有 www 就没问题。
我怎样才能做到这一点?
您可以捕获没有 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.
}
我已经通过使用以下 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。