ドメインを設定しました。私とそのドメインを別のWebサーバーにポイントしたいと思います。
まあ言ってみれば:
ドメイン1:サーバー1のwww.test.com
ドメイン2:サーバー2のwww.test1.com
Www.test1.comをwww.test.comに転送したいのですが、サーバー2に仮想ホストを設定し、mod_rewriteを使用して転送を試みました。
仮想ホストは次のようになります。
<virtualhost XXX.XXX.XXX.XXX:80>
ServerName www.test1.com
ServerAlias test1.com *.test1.com
RewriteEngine On
RewriteCond %{HTTP_Host} (.*)\test\.com
RewriteRule ^(.*) http://%1test.com/$1 [R=301,L]
</VirtualHost>
http://test1.com がリダイレクトしないことを除いて、すべてが正常に機能します。
質問1:入ってくるすべてのリクエスト(サブドメインすべて)をリダイレクトするにはどうすればいいですか http://test1.com へ http://www.test.com mod_rewriteを使用します。
質問2:この場合、仮想ホストのディレクトリを指定する必要がありますか?
質問3:ServerAliasが必要ですか、それともここでは生産的ではありませんか?
UPDATE:
次の設定で301を行うことで終わりました
<virtualhost <ip>:80>
ServerName test1.com
ServerAlias www.test1.com
Redirect 301 / http://www.test.com
</VirtualHost>
DocumentRootは必要ありません。次のようなvhostを問題なく設定できます。
<VirtualHost xx.xx.xx.xx:90>
ServerName domain.tld
ServerAlias www.domain.tld
RedirectPermanent / http://www.domain2.com/
</VirtualHost>
これにより、すべてのリクエストがメインサイトだけでなくサブフォルダーにもリダイレクトされます。例えば。 www.domain.tld/foo/barはwww.domain2.com/foo/barにリダイレクトされます
ServerAliasは、複数のホスト名が必要な場合にのみ必要です。wwwとwwwなしの両方など。
仮想ホストで次のようなことを試してください:
<Virtualhost XXX.XXX.XXX.XXX:80>
ServerName www.test1.com
ServerAlias *.test1.com
Redirect 301 / http://www.test.com
</VirtualHost>
非常に基本的で、ユーザーがtest1.comからtest.comにアクセスしようとしているURLに関係なく、何でも転送する必要があります。
構成例で.comと.deを混同しています。これは問題でしょうか?
質問1:
RewriteCond %{HTTP_Host} ^.*\.test1\.de [NC]
RewriteRule ^(.*)$ http://www.test.de/$1 [L,R=301]
質問2:
DocumentRootが必要かどうかは100%わかりませんが、違います。
質問3:はい、*。test1.comエイリアスが必要です。
このVirtualHostが最初のVirtualHostである場合、それがなくても機能する可能性があります。
それがデフォルトであるため、他のVirtualHostsと一致しなかったすべてのリクエストを取得します。
しかし、それを設定する方がきれいです。