我正在尝试为我的 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.8
TXT
www.example1.com
当该域的其中一个子域已有 DNS 记录时,您无法映射通配符子域!