web-dev-qa-db-ja.com

NamecheapとHerokuでHTTPSを強制するにはどうすればよいですか?

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を含むようにリダイレクトする必要があります。私が間違っていることについて何か考えはありますか?

11
Programmingjoe

問題を修正しました。リダイレクトレコードを追加して、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

これは、herokuアプリを操作するためにnamecheapで行う必要があることです。物事のheroku側にはまだやるべきことがあります。

Herokuのアプリ設定の下にDomains and certificatesセクションがあります。そこにドメインを追加できます。これにより、上からDNS Targetブロックに入れたものである<link from heroku>が作成されます。 HerokuではLetsEncryptも使用できるようになり、SSL証明書が自動的に更新されます。

変更の合間にしばらく待つことを忘れないでください。 DNSの変更は、適用されるまでに最大24時間かかる場合があります。

6
Programmingjoe

Heroku、Django、namecheapを使用していて、まだ同様の問題がある場合(つまり、https Webサイトは機能しているが、httpは自動的にhttpsにルーティングされない)、settings.pyファイルでSECURE_SSL_REDIRECT = Trueも設定する必要があります。 。この追加を行うと、私の場合の問題が修正されました。

この変更は、@ Programmingjoeの回答に投稿されたURL構成に加えて、問題を修正するはずです。

1
Hassan A

これらのルールをどのように正確に設定しましたか? NamecheapとHerokuという同じセットアップを使用しています。ルートドメインをhttpsにリダイレクトするように取得できますが、httpを強制すると、安全ではなくなります。セットアップのスクリーンショットは大きな助けになります!

0
Drowsy