使用虚拟主机进行域重定向

mah*_*ich 7 domain virtualhost apache-2.2

我已经设置了一个域,我想将该域指向不同的网络服务器。

让我们说:

域 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>
Run Code Online (Sandbox Code Playgroud)

一切正常,除了http://test1.com不重定向。

问题 1: 我将如何使用 mod_rewrite 将进入http://test1.com 的所有请求(所有子域)重定向 到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>
Run Code Online (Sandbox Code Playgroud)

Fra*_*sen 14

DocumentRoot 不是必需的。您可以像这样设置虚拟主机而不会出现任何问题:

 <VirtualHost xx.xx.xx.xx:90>
  ServerName domain.tld
  ServerAlias www.domain.tld
  RedirectPermanent / http://www.domain2.com/
 </VirtualHost>
Run Code Online (Sandbox Code Playgroud)

这会将所有请求重定向到主站点以及子文件夹。例如 www.domain.tld/foo/bar 将被重定向到 www.domain2.com/foo/bar

仅当您想要多个主机名时才需要 ServerAlias。例如 www 和不带 www。

  • 仅供参考,“RedirectPermanent”执行 301 重定向。为确保对子文件夹的所有请求也被重定向,请在重定向行中的 URL 后附加斜杠。 (2认同)