nginx将所有通配符子域重写为www.site.com

时间:2017-09-21 06:01:44

标签: nginx

我想将http://abc.example.com的所有子域名重定向到https://abc.example.com

2 个答案:

答案 0 :(得分:0)

这适用于example.comwww.example.com

server {
    listen 80;
    listen [::]:80;
    server_name *.example.com;
    return 301 https://www.example.com$request_uri;
}

所有子域名从httphttps

server {
    listen 80;
    listen [::]:80;
    server_name *.example.com;
    return 301 https://$host$request_uri;
}

注意server_name *.example.com

您也可以使用$server_name

  • $ host - 客户端为当前请求提供的主机名。
  • $ server_name - 配置中主机名声明的第一个主机名,用于响应请求的服务器块。

规范主机名

如果主机名与server_name列表中的第一个名称不匹配。确保您的内容仅在规范主机名中可用,例如避免重复的内容问题(SEO)。非常适合将非www重定向到www或将www重定向到Nginx中的非www,只要您的服务器块仅适用于单个网站。

server_name example.com www.example.com example.net www.example.net _;
if ( $host != $server_name ) {
  return 301 $scheme://$server_name$request_uri;
}

检查此网站nginx-redirect是否有扩展版

答案 1 :(得分:0)

试试这段代码,

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    listen  443 ssl default_server;
    listen [::]:443 ssl default_server;
    server_name *.example.com;

    if ($scheme = http) {
        return 301 https://$host$request_uri;
    }