ウェブサイト(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に対して適切に構成されていませんでした。したがって、同じことをしたい人を助けることができれば、この構成は機能します。
私は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の応答はそのファイルからのものであり、ここに投稿されている構成ではありません。
私はRewriteRuleを次のように書きます
RewriteRule ^(/.*)$ http://www.domain.com$1 [R=301,L]
ランダムなジャンクを.comドメインに追加していないことを確認するため
次に、 RewriteLogLevel 3およびRewriteLog を有効にし、生成されたファイルに他の間違いがないか調べます。
動作しないドメインの1つにwgetの出力を添付できれば、それは役に立ちます。
マシン上に仮想ホストがあるかどうかはわかりませんが、blaba.domain.comが構成内の別の場所でまだ定義されていないことを確認してみてください
注意:この名前を使用して、最後にチェックされる仮想ホストになるようにします。これは、デフォルトの仮想ホスト(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の使用 を参照してください