web-dev-qa-db-ja.com

Apache2を使用して、www以外のすべてのサブドメインをメインのwwwドメインにリダイレクトします

ウェブサイト(domain.com)があり、すべてのセカンダリドメイン(domain2.com、domain3.com)とこれらのドメインのすべてのサブドメイン(* .domain.com、*。domain2.com ...)をリダイレクトしたいと思います。 )メインドメインwww.domain.com(サイトにアクセスするための唯一のURLを後者にしたいため)。

この目的のために、これらすべての可能性をキャッチしてリダイレクトするためにApache仮想ホストを作成しました(DNSを構成した後、言うまでもありません)。この構成を、Apacheの「sites-enabled」フォルダー内の「999-catchall」という名前のファイルに入れました。 注:この名前を使用して、最後にチェックされる仮想ホストになるようにします。これは、デフォルトの仮想ホスト(000-www.domain.comのデフォルト)と私の仮想ホストもあるためです。ウェブメール(001-webmail.domain.comのウェブメール)

この「999-catchall」ファイルの内容は次のとおりです。

<VirtualHost *:80>
        # catch...
        ServerName domain.com
        ServerAlias domain2.com domain3.com *.domain.com *.domain2.com *.domain3.com
        # ...and redirect
        RewriteEngine on
        RewriteCond %{HTTP_Host} !^www\.domain\.com$ [NC]
        RewriteRule ^(.*)$ http://www.domain.com$1 [R=301,L]
</VirtualHost>

この構成は、domain.com、domain2.com、*。domain2.com、domain3.com、および* .domain3.comで機能しますただし、*。domain.comでは機能しません。例:blabla.domain2.comと入力すると、www.domain.comにリダイレクトされますが、blaba.domain.comと入力すると、リダイレクトされません(「サーバーが見つかりません」というエラーが表示されます)。

私の方法は正しいですか?私の間違いがどこにあるかわかりますか?

編集:私の間違い、私のDNSサーバーは* .domain.comに対して適切に構成されていませんでした。したがって、同じことをしたい人を助けることができれば、この構成は機能します。

6
Flackou

私はApacheの専門家ではありませんが、変更を検討しています。

ServerName www.domain.com
ServerAlias domain.com domain2.com domain3.com *.domain.com *.domain2.com *.domain3.com

編集:OPを読み直すと、www.domain.comを別のファイルで既に構成しているように見えますが、これは許可されていないと思います。しかし、それは問題の一部かもしれません。私があなたを正しくフォローしている場合、www.domain.comの応答はそのファイルからのものであり、ここに投稿されている構成ではありません。

1
Greeblesnort

私はRewriteRuleを次のように書きます

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

ランダムなジャンクを.comドメインに追加していないことを確認するため

次に、 RewriteLogLevel 3およびRewriteLog を有効にし、生成されたファイルに他の間違いがないか調べます。

動作しないドメインの1つにwgetの出力を添付できれば、それは役に立ちます。

0
dpavlin

マシン上に仮想ホストがあるかどうかはわかりませんが、blaba.domain.comが構成内の別の場所でまだ定義されていないことを確認してみてください

0
Roy Rico

注意:この名前を使用して、最後にチェックされる仮想ホストになるようにします。これは、デフォルトの仮想ホスト(000-www.domain.comのデフォルト)とWebメールの仮想ホスト(001-webmail.domainのWebメール)もあるためです。 .com)。

Vhost構成ファイルは0からアルファベット順にチェックされ、最初のファイルはキャッチオールとして機能します。

Apache(1.3から2.2)のドキュメント:

このリストの最初のvhost(指定されたIPアドレスを持つ構成ファイルの最初のvhost)は最高の優先度を持ち、不明なサーバー名への要求またはHost:ヘッダーフィールドのない要求をキャッチします。

他のオプションは、_default_:80仮想ホストを使用することかもしれません。 _default_ vhostsの使用 を参照してください

0
Niel Thiart