web-dev-qa-db-ja.com

virtualhostによるドメインリダイレクト

ドメインを設定しました。私とそのドメインを別の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.comhttp://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>
4
mahatmanich

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なしの両方など。

11
Frands Hansen

仮想ホストで次のようなことを試してください:

<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に関係なく、何でも転送する必要があります。

2
Wilshire

構成例で.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と一致しなかったすべてのリクエストを取得します。
しかし、それを設定する方がきれいです。

1
faker