2

私はインターネット全体を見てきましたが、Heroku.com で次の結果を得るために、DNS などの 100% 適切なセットアップであると期待される最終的な解決策を 1 つ得ることができませんでした。

  • mydomain.com を使用して myapp.herokuapp.com のコンテンツを表示する
  • http://mydomain.comからhttp://www.mydomain.comへのすべてのトラフィックのリダイレクト(サブフォルダーを含む)

私はどこからでも少し助けを得ることができますが、DNS からラック書き換えまでの問題全体を処理する決定的なものはありません。そのため、ここで質問しています (私のレジストラと Heroku でのサポートは、私に「彼らの役割」を与えることしかできません)。 )。

私が理解している限り、行う必要があるのは次のとおりです。

  1. mydomain.com と www.mydomain.com を Heroku のカスタム ドメインに追加する

  2. レジストラ DNS でCNAME をhttp://myapp.herokuapp.comに変更します。質問: myapp.herokuapp.com への CNAME リダイレクトを使用するのは、「www」と「*」の両方ですか?

  3. ネイキッド ドメイン リクエスト (http://mydomain.com) を処理するために、「@」DNS レコードを追加します。これは CNAME では行われないため、 https://devcenter.heroku.com/articles/custom-domainsの IP 番号を使用していますが、記事によると稼働時間に深刻な問題があります。

-- 1-3 で、 http://myapp.herokuapp.comのコンテンツでhttp://mydomain.comhttp://www.mydomain.comの両方を提供する Web サイトができました

c. ここで、すべてをhttp://mydomain.comからhttp://www.mydomain.comにリダイレクトしたいと考えています。Heroku のサポートによると、これはラック書き換え (https://github.com/jtrupiano) で行う必要があります。 /rack-rewrite)。そこにある例を使用すると、コードは次のようになります。

r301 %r{.*}, 'http://mydomain.com$&', :if => Proc.new {|rack_env|
  rack_env['SERVER_NAME'] != 'www.mydomain.com'
}

ただし、これは私にとって永遠のループを作成します。

そこで、私の質問は次のとおりです。このセットアップを実現するために、Heroku と DNS 設定の適切なワークフローは何でしょうか?

試行錯誤によってさまざまな DNS 設定を試すのは非常に難しいため、これをトラブルシューティングすることは非常に困難です (それらが成功したかどうかを知ることは困難です)。

4

1 に答える 1

5

これは書き換えルールだと思いますが、「「http://mydomain.com $&」($&は.com以降のすべてを保持することを示します)に301リダイレクトを実行しますが、リクエストは「www.mydomain.com」ではありません。

したがって、wwwが含まれていないサーバーへのリクエスト(たとえば、裸のmydomain.com)は、mydomain.comにリダイレクトされるため、リダイレクトループに入ります。

おそらく次のように書き直す必要があります。

r301 %r{.*}, 'http://www.mydomain.com$&', :if => Proc.new {|rack_env|
rack_env['SERVER_NAME'] == 'mydomain.com'}

したがって、ドメインのwwwバージョンにリダイレクトしています。

実はここにデュープがあります

編集: これは私がすることです:

  1. リダイレクトルールを削除する
  2. www.domain.comとdomain.comの両方がmyapp.herokuapp.comを返すようにDNSを設定します
  3. リダイレクトを気にせずにDNSが機能することを確認します
  4. DNSレベルで、役立つリダイレクトを実行しようとしていないことを確認してください

この段階では、DNSとは何の関係もありません。彼らが行う唯一のことは、IPアドレス(Aレコード)または別のドメイン(CNAME)を返すことです。その後、彼らの仕事は終わりました。

次:

  1. ラック書き換えルールを適用する
  2. サーバーの再起動が必要になる場合があります-万が一の場合に備えて再起動してください
  3. サムスペードのようなものを使用してテストします-ヘッダーには、301リダイレクトと、正しく機能している場合は新しい場所が含まれます
于 2012-05-01T08:58:30.083 に答える