2012-05-01 12 views
2

私はインターネットを全部見てきましたが、次の結果を得るために、DNSの100% Heroku.comに:(サブフォルダを含む)http://mydomain.comからhttp://www.mydomain.comへのすべてのトラフィック Rails:DNSを使った適切なセットアップ、Heroku用のRack-rewriteなど

のリダイレクトmyapp.herokuapp.com

  • でコンテンツを表示するためにmydomain.comを使用し

    • 私が得ることができますどこからでも助けてくれるが、決定的なものは何もないそれはDNSからラック書換えまでの全面的な問題を処理するので、私はここで尋ねています(レジストラとHerokuのサポートは私に「自分の部分」を与えるだけです)。何をすべきか

      は、私が理解限り、次のとおりです。

      1. http://myapp.herokuapp.com

      2. 変更CNAME Herokuのでカスタムドメインにmydomain.comとwww.mydomain.comを追加私のレジストラのDNS。 質問: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

      Cのコンテンツでhttp://mydomain.comhttp://www.mydomain.comの両方を提供しますウェブサイトで私を残します。今、私は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設定を試すことは非常に難しいので、トラブルシューティングは非常に難しいです(完了したかどうかは分かりません)。

  • 答えて

    5

    それは私がそれだけでホストするif($ &はそれが.COM後にすべてのものを維持することを示している)、「301リダイレクトを行うに 『http://mydomain.com $ &』を言っていると思い書き換えルールですリクエストは 'www.mydomain.com'ではありません。

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

    それはおそらくのようなものに書き換える必要があります。だから、あなたはあなたのドメインのWWW版にリダイレクトされている

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

    実際dupe here

    編集があります: これは私がどうなるのかです:

    1. は両方www.domain.comようにDNSを設定
    2. あなたのリダイレクトルールを削除しますdomain.comはmyapp.herokuapp.comを返します
    3. リダイレクトについて心配することなくDNSが動作することを確認してください
    4. DNSレベルで役立つリダイレクトを実行しようとしていないことを確認してください。

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

    次へ:

    1. が適用サーバは再起動が必要な場合があります
    2. ラック書き換えルールは - 念のためにそれを行う
    3. テスト使用して何かSam Spadeのように - ヘッダーには、301リダイレクトを含んでおります新しい場所が正常に機能している場合は
    +0

    リダイレクトの問題については、光栄です。重複に関しては、私もそのDNSをテストしましたが、おそらく私が持っていたDNS設定のために、私はそれを動作させることができませんでした。だから私はDNS設定がこれにも影響を与えるので、私は "完全な"アプローチを取っていきたいと思っています。何が何をしているのかを理解することは難しいです。 – Christoffer

    +0

    ...ああ、それは実際に私のためにも無限ループを作成します。それが私のDNS設定のためにあるかどうかわかりませんが、にもかかわらず動作しません。 – Christoffer

    +0

    Sam Spade、Fiddler、基本的なpingなどのツールを使用して、問題がDNSかWebアプリケーションのどちらであるかをトラブルシューティングします。 DNSが適切なドメイン/ ipを返す場合、おそらくDNSの問題ではありません。 – edralph

    関連する問題