你如何使用Namecheap和Heroku强制HTTPS?

时间:2017-10-25 02:38:23

标签: ssl heroku hosting namecheap

我正在使用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。知道我做错了吗?

3 个答案:

答案 0 :(得分:2)

我解决了这个问题。我添加了重定向记录,以便如果输入的URL有或没有www,有或没有https,它将被重定向到包括https和www。这需要4个域重定向。

另外,app.domain.io网址没有内容,因为我还没有在那里设置内容。我计划稍后使用app.domain.io获取新的heroku应用程序。

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

修改

Redirect Domain

下的我的域名设置中
Source Url       Destination Url
domain.xyz       https://www.domain.xyz/
www.domain.xyz   https://www.domain.xyz/

以上确保始终使用https。

advanced DNS

下的我的域Host Records设置中
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中有一个Domains and certificates部分。 您可以在那里添加您的域名。这将创建一个DNS Target,这是您放在上面<link from heroku>块中的内容。 Heroku还允许您使用LetsEncrypt,他们将自动刷新您的SSL证书。

请记住在更改之间等待一段时间。 DNS更改最多可能需要24小时才能应用。

答案 1 :(得分:2)

对于使用Heroku,Django和namecheap仍存在类似问题(例如,您拥有可用的https网站,但http不会自动路由到https)的任何人,您还必须在设置中设置SECURE_SSL_REDIRECT = True .py文件。进行此添加后,就我而言解决了该问题。

除了在@Programmingjoe的答案中发布的URL配置之外,此更改还可以解决此问题。

答案 2 :(得分:0)

您如何精确设置这些规则?我正在使用相同的设置,即Namecheap和Heroku。我可以将其重定向到https的根域,但是每当我强制使用http时,它仍然会经历不安全的情况。您的设置的屏幕截图会很有帮助!