为什么我的URL重定向在没有www的情况下无法工作



我想要以下重定向:

http://example.com -> http://www.example.com
example.com -> http://www.example.com
www.example.com -> http://www.example.com

以我的名义,我设置了两个URL重定向记录:

CNAME Record        | www | appname.us-east-2.elasticbeanstalk.com.
URL Redirect Record |  @  | http://www.example.com                  | Unmasked 

但是,我仍然只能访问http://www.example.com当我实际键入这个完整的URL时。当我删除www时,请求就会超时。所以URL重定向似乎没有任何作用。如何正确重定向到我的完整http域?

您可以将www.domain.com设为A记录,并将www.domaincom的所有其他域名设为CNAME。但这只"解决"了如果www.domain.com的IP地址发生更改,您不必更改其他DNS实体,因为它们是别名。

因此,在DNS级别上,没有办法强制重定向。这是有充分理由的,因为DNS不仅仅用于HTTP。例如,如果所有对domain.com的请求都重定向到www.domain.com,则您的电子邮件地址将更改为user@www.domain.com.

因此,对于HTTP重定向,您必须使用HTTP解决方案。这可以是在Web服务器级别(nginx、apache等(

我使用NGINX,实现了如下重定向:

vi/etc/nginx/sites-enabled/example-com-

server {
listen 80;
server_name example.com;
return 301 https://www.example.com$request_uri;
}
server {
listen 80;
server_name www.example.com;
root /var/www/html;
index index.html index.htm;
}

响应状态代码301表示"已永久移动",用于永久URL重定向。

请不要忘记重新启动NGINX。

sudo systemctl restart nginx

最新更新