web-dev-qa-db-ja.com

Aレコードでリダイレクトをオーバーライドする-何が間違っていますか?

GoDaddyアカウントを所有しており、管理者の指示に従って、メインサイトのプレースホルダーとしてリダイレクトを使用しています。彼らは、「dev」と「staging」がアプリケーションにアクセスすることを望んでいますが、他のすべてはリダイレクトに行きます。

「ステージング」サブドメインを介してアプリケーションにアクセスできるようにします。私はこのことを機能させることができないようです。 GoDaddyリダイレクト、DNSゾーンファイル、サイト対応(サーバー上)、およびhostsファイルの間で、私は行き詰まっています。 Ubuntu 14.04.3 LTSを実行しているAWS AMIで実行しています。

これが私がやろうとしていることです(無実の人を保護するためにテキストと数字が変更されています):

入力する場合:

http://dev.phishmenot.com->サーバーの開発ディレクトリにあるサイト。

http://staging.phismenot.com->サーバー上のステージングディレクトリ内のサイト。

http://[anything else].phishmenot.com->(リダイレクト301:KickoffLabsウェブサイト)

構成は次のとおりです。

Forwarding Pane from GoDaddy

次に、実際のゾーンファイルがあります。

Modified Zone Management from GoDaddy

私のホストファイル(AWSサーバー上):

127.0.0.1 localhost
67.4.67.45 dev.phishmenot.com
67.4.67.45 staging.phishmenot.com

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

次に、サイト有効ディレクトリに適切に配置されたシンボリックリンクを使用して、サイト利用可能ディレクトリにあるstaging.phishmenot.com.confファイルを示します。

<VirtualHost staging.phishmenot.com:80>
        ServerAdmin [email protected]
ServerName phishmenot.com
    ServerAlias staging.phishmenot.com
DocumentRoot /var/www/staging/current
        ErrorLog ${Apache_LOG_DIR}/error.log
        CustomLog ${Apache_LOG_DIR}/access.log combined
</VirtualHost>

KickoffLabsを使用してサイトのプロモーションを行っており、セットアップの指示に従いました。奇妙なのは、私がDID開発サイトを機能させることです。どうやったか思い出せません。動作するまで物事を微調整し続け、その後開発に戻らなければならなかったと思います。

私は間違いなくUnixやサーバーの専門家ではありません。知識のあるアマチュアと呼んでください。これを標準的な方法で構成して、自分が何をしているのかを知っている人がいれば、リモートで認識できるようにします。

更新:

あなたが提案した変更を試みましたが、www.phishmenot.comサイトOR www.kickofflabs.comサイトにアクセスできなくなりました。これが私の.htaccessファイルです。実際の名前と住所は編集されましたが、この質問と一致しています:

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_Host} !^(dev|staging).phishmenot.com$
RewriteRule ^(.*) http://proxy.kickofflabs.com/$1 [QSA,L,R=301]
# Hide the application and system directories by redirecting the request to index.php
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
Header set Expires "Thu, 19 Nov 1981 08:52:00 GM"
Header set Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"
Header set Pragma "no-cache"

提案に従って、GoDaddyからリダイレクトを削除し、できれば.htaccess fileをすべて処理しました。また、キックオフラボプロキシへの「www」のCNAMEレコードも削除しました。これで、ステージングは​​www.phishmenot.comにリダイレクトされ、サーバーはアドレス指定されなくなりました。 aレコードの@は、AまたはCNAMEレコードとしてリストされていないものをすべてキャッチするはずだと考えました。注:追加のmod_rewriteコマンドは、アプリケーションフレームワークCodeIgniterをサポートしています。矛盾がある場合は、調整できます。

3
ScottK

OKセットアップを見てみると、単純なものであるhtaccessリダイレクトが必要です。

  1. GoDaddyですべてのDNSレベルのリダイレクトを削除します。
  2. AWSがwww.example.comをホストするメインサーバーである場合、レコードエントリ「@」をAWSのIPとして使用すると、non-wwwand wwwは意図したとおりに機能します。
  3. ステージングおよび開発サーバーで mod_rewrite が有効になっているため、条件付き書き換えを実行できます。
  4. 空のファイルを作成し、ステージングと開発の両方で.htaccessつまり/var/www/dev/.htaccessという名前を付けます。
  5. 両方の.htaccessファイルに次のようなものを入力します。

    RewriteCond %{HTTP_Host} !^(dev|staging|www).example.com$

    RewriteRule ^(.*) http://www.example.com/$1 [QSA,L,R=301]

上記のコードは、dev、staging、www以外のすべてのサブドメインをメインサイトにリダイレクトします。また、メインサイトでhtaccessを使用することをお勧めします。これにより、www以外からwwwに適切にリダイレクトできるため、@を使用してAレコードについて言及した理由は、htaccessファイルは3つのサイトすべてで機能するはずです。

リダイレクトサーバー側の管理はDNSで行うよりもはるかにうまく機能します。必要に応じて技術的な書き換えを行うことができることを気にしないでください。一般的に、上司の男性との議論に参加する場合、サーバー側をリダイレクトすることは業界標準です。

編集。

上記のサブドメイン以外の別のドメインに完全にリダイレクトする場合は、ステージングサイトと開発サイトの両方で.htaccessリダイレクトを使用することを選択する必要があります。両方のサイトのルートに空の.htaccessを作成し、ファイルに以下を入力します。

RewriteCond %{HTTP_Host} !^(dev|staging).siteA.com$
RewriteRule ^(.*) http://www.siteB.com/$1 [QSA,L,R=301]

繰り返しますが、サーバーの書き換えが有効になっていることを確認してください。そうしないと、テスト時に何も起こりません。

1
Simon Hayter