您如何使用 Namecheap 和 Heroku 强制使用 HTTPS?
Posted
技术标签:
【中文标题】您如何使用 Namecheap 和 Heroku 强制使用 HTTPS?【英文标题】:How do you force HTTPS with Namecheap and Heroku? 【发布时间】:2018-04-05 23:46:28 【问题描述】:我正在使用 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。知道我做错了什么吗?
【问题讨论】:
在这里查看这个答案***.com/a/58144352/5327882 【参考方案1】:我解决了这个问题。我添加了重定向记录,以便如果输入的 url 带有或不带有 www 和带有或不带有 https,它将被重定向以包含 https 和 www。这需要对域进行 4 次重定向。
此外,app.domain.io url 没有内容,因为我还没有在那里设置一些东西。我打算稍后将 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 小时。
【讨论】:
你也不需要为 CNAME 做一个@host 吗? 我没有,如果您希望人们访问 domain.com 而不是 www.domain.com,也许您需要它? @CaleSwitzer 任何想法为什么这对我有用(完全相同的配置)对于根http://x.y
而不是 http://www.x.y
?
我不确定,你等了多久?或许你只需要再等一段时间让它传播?【参考方案2】:
对于任何使用 Heroku、Django 和 namecheap 的人仍然有类似的问题(即你有一个工作的 https 网站,但 http 不会自动路由到 https),你还必须在你的 settings.py 中设置SECURE_SSL_REDIRECT = True
文件。在我的情况下,添加这个解决了这个问题。
除了@Programmingjoe 的答案中发布的 URL 配置之外,此更改应该可以解决问题。
【讨论】:
以上是关于您如何使用 Namecheap 和 Heroku 强制使用 HTTPS?的主要内容,如果未能解决你的问题,请参考以下文章
将 https://example.com 重定向到 https://www.example.com:Namecheap 和 Heroku
在根级别使用namecheap域配置heroku hobby dyno
在Namecheap上为共享IP SiteGround网站添加子域