无法在 Nginx Web 服务器上设置 301 重定向

无法在 Nginx Web 服务器上设置 301 重定向

我正在尝试为我的 Nginx 服务器上托管的所有域设置 301 重定向,到目前为止,所有尝试都失败了。我的 Nginx 配置如下。

文件:/etc/nginx/sites-available/所有我的站点

# 301 Redirects
server {
    server_name www.example1.com;
    return 301 $scheme://example1.com$request_uri;
}

server {
    server_name www.example2.com;
    return 301 $scheme://example2.com$request_uri;
}

# The Real Deal
server {
    listen 80;
    server_name example1.com example2.com;

    [...]

}

我也尝试过这些配置,但没有效果。

# 301 Redirects
server {
    listen 80;
    server_name www.example1.com;
    return 301 $scheme://example1.com$request_uri;
}

server {
    listen 80;
    server_name www.example2.com;
    return 301 $scheme://example2.com$request_uri;
}

# The Real Deal
server {
    listen 80;
    server_name example1.com example2.com;

    [...]

}

# 301 Redirects
server {
    listen 80 default_server;
    server_name www.example1.com;
    return 301 $scheme://example1.com$request_uri;
}

server {
    listen 80 default_server;
    server_name www.example2.com;
    return 301 $scheme://example2.com$request_uri;
}

# The Real Deal
server {
    listen 80 default_server;
    server_name example1.com www.example1.com example2.com www.example2.com;

    [...]

}

我做错了什么?我真的不知道。(我尽力了,谷歌搜索并参考文档。)

更新:实际上,www.example2.com 可以正常重定向到 example2.com。但 www.example1.com 却不行。这很奇怪,我仍然一无所知。

答案1

我假设您想将您的域名从 www 重定向到非 www。

如果是这样,您可以尝试以下方法,我已经在我的 nginx 配置中使用该方法。

    server {
        listen 80;
        server_name  www.example1.com;
        rewrite ^(.*) http://example1.com$1 permanent; 
}

答案2

Nginx 配置确实正确。问题出在我的 DNS 配置上。我在 example1.com 上对A和记录使用了通配符子域映射(例如),但它已经有的记录。AAAA*.example.com A 123.456.67.8TXTwww.example1.com

当该域的其中一个子域已有 DNS 记录时,您无法映射通配符子域!

相关内容