我已经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它更干净。