如何在Namecheap和Heroku中强制使用HTTPS?

27

我正在尝试在Heroku和Namecheap上设置SSL。

目前在Heroku上,我拥有以下域名:

Domain Name - DNS Target
www.app.domain.io - www.app.domain.io.herokudns.com
www.domain.io - www.domain.io.herokudns.com

我在 NameCheap 上有:

Type - Host - Value
CNAME Record - app - www.app.domain.io.herokudns.com
CNAME Record - www- www.domain.io.herokudns.com
URL Redirect Record - @ - https://www.domain.io
CNAME Record - www - https://www.domain.io

有效的策略:

www.domain.io works fine and does not redirect to include https
domain.io just fails to reach a site
https://www.domain.io works great!
https://domain.io fails to reach a site.
http://www.app.domain.io/ fails to reach a site.
https://www.app.domain.io/ fails to reach a site.
http://app.domain.io/ reached the heroku nothing there yet page.
理想情况下,所有页面都应始终重定向以包括https和www。有任何想法我做错了什么吗?

理想情况应该是所有页面都应该始终重定向到包含https和www的网址。不知道我做错了什么?


请查看此答案:https://dev59.com/CVsW5IYBdhLWcg3winvt#58144352 - ronatory
2个回答

38

我解决了这个问题。我添加了重定向记录,以便如果输入的URL带有或不带有www和https,它都会被重定向到包含https和www的地址。这需要对该域进行4次重定向。

此外,app.domain.io URL 没有内容,因为我还没有在那里设置过东西。我计划以后使用 app.domain.io 创建一个新的Heroku应用程序。

请记得等待足够长的时间并尝试清除您的缓存以查看问题是否已解决。

编辑

在我的域设置中,位于 重定向域名 下面

Source Url       Destination Url
domain.xyz       https://www.domain.xyz/
www.domain.xyz   https://www.domain.xyz/

以上确保始终使用https。

在我的域名的高级DNS设置下的主机记录

Type                   Host    Value                      TTL
CNAME Record           www     <link from heroku>         30 min
URL Redirect Record    @       https://www.domain.xyz/    unmasked
URL Redirect Record    www     https://www.domain.xyz/      unmasked

以下是在namecheap上与heroku应用程序配合使用的步骤。在heroku方面还有更多要做的事情。

在Heroku中,在应用程序设置下有一个 域名和证书 部分。 您可以在那里添加您的域名。这将创建一个 DNS目标 ,这是您在上面的 <link from heroku> 块中放置的内容。Heroku还允许您使用LetsEncrypt,并会自动刷新您的SSL证书。

请记得在更改之间等待一段时间。DNS更改可能需要长达24小时才能生效。


你不需要为CNAME记录也制作@主机吗? - Tennyx
1
我不确定,也许如果你想让人们访问domain.com而不是www.domain.com,你需要这样做?@CaleSwitzer - Programmingjoe
2
你有什么想法为什么这个配置对于根目录的 http://x.y 起作用,但是对于 http://www.x.y 却不起作用? - Josh Mc
我不确定,你等了多久?也许你只需要再等一会儿,让它传播一下? - Programmingjoe

2
对于使用Heroku、Django和namecheap的用户,如果你的网站可以使用https但http不能自动路由到https,则需要在settings.py文件中设置SECURE_SSL_REDIRECT = True。在我的情况下,这个改变解决了问题。除了@Programmingjoe答案中发布的URL配置之外,这个改变应该可以解决这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接