【问题标题】:Why are my URL redirects not working without www?为什么我的 URL 重定向在没有 www 的情况下不起作用?
【发布时间】:2020-04-29 01:38:44
【问题描述】:

我想要以下重定向:

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

在我的 namecheap 中,我设置了两个 URL 重定向记录:

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

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

【问题讨论】:

  • 您可以获得您域的完整 dns 记录吗?您的域中似乎没有将www 设置为CNAME
  • 我刚刚在上面添加了www CNAME记录。任何想法如何解决这个问题?
  • 你有 Namecheap SSL 吗?
  • 我没有 SSL。我更新了我的问题以删除 SSL 部分,因为它在没有 https 的情况下具有相同的行为。任何想法如何解决这个问题?

标签: redirect https cname namecheap


【解决方案1】:

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

因此,在 DNS 级别上,无法强制执行重定向。并且有一个很好的理由,因为 DNS 不仅仅用于 HTTP。例如,如果对 domain.com 的所有请求都将重定向到 www.domain.com,您的电子邮件地址将更改为 user@www.domain.com。

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

【讨论】:

    【解决方案2】:

    我使用 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多