域名redirect与虚拟主机

我已经build立了一个,我和我想把这个域指向一个不同的web服务器。

可以说:

域1 :服务器1上的www.test.com

域2 :www.test1.com在服务器2上

我想将www.test1.com转发到www.test.com,我试图在服务器2和mod_rewrite上build立一个虚拟主机

虚拟主机如下所示:

<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不redirect。

问题1:如何使用mod_rewrite将所有进入http://test1.com的请求(子域名所有)redirect到http://www.test.com 。

问题2:在这种情况下,我需要为虚拟主机指定一个目录吗?

问题3:我需要ServerAlias还是在这里反效果?

更新:

完成以下设置301

 <virtualhost <ip>:80> ServerName test1.com ServerAlias www.test1.com Redirect 301 / http://www.test.com </VirtualHost> 

DocumentRoot不是必需的。 你可以设置这样的虚拟主机没有任何问题:

  <VirtualHost xx.xx.xx.xx:90> ServerName domain.tld ServerAlias www.domain.tld RedirectPermanent / http://www.domain2.com/ </VirtualHost> 

这将redirect到主站点的所有请求,但也是子文件夹。 如www.domain.tld / foo / bar将被redirect到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,都应该传输任何内容。

您在示例configuration中混淆了.com和.de。 这可能是问题吗?

问题1:

RewriteCond %{HTTP_HOST} ^.*\.test1\.de [NC]
RewriteRule ^(.*)$ http://www.test.de/$1 [L,R=301]

问题2:
我不是100%确定是否需要DocumentRoot,但我认为不是。

问题3:是的,你需要* .test1.com别名。
如果这个VirtualHost是你的第一个VirtualHost,它可能没有它。
然后,它将获得所有与其他VirtualHost不匹配的请求,因为它是默认的。
但是configuration它更干净。