【问题标题】:Apache VirtualHost redirect, change only domainApache VirtualHost 重定向,仅更改域
【发布时间】:2019-01-15 13:21:42
【问题描述】:

如何创建 VirtualHost 以重定向所有链接,仅更改其域,包括子域和参数:

exampleA.com -> exampleB.com
test.exampleA.com -> test.exampleB.com
test1234.exampleA.com/url/test.html?param=222 -> test1234.exampleB.com/url/test.html?param=222

我想重定向所有像*这样的子域,它应该是永久的301

现在我有一个简单的 301 重定向

<VirtualHost *:80 *:443>
        ServerName exampleA.com
        ServerAlias *.exampleA.com

        RewriteEngine On
        Redirect 301 / https://exampleB.com
</VirtualHost>

【问题讨论】:

  • 您可以使用默认主机(将用于所有主机,但定义了特定虚拟主机的主机除外)。在该默认主机中,您可以根据需要实施外部重定向规则。注意:它总是 first 定义的虚拟主机,http 服务器会认为它是默认主机。

标签: apache url-redirection virtualhost


【解决方案1】:

我找到了解决办法:

<VirtualHost *:80 *:443>
        ServerName exampleA.com
        ServerAlias *.exampleA.com

        RewriteEngine On
        RewriteCond %{HTTP_HOST} (.+\.)?exampleA\.com$ [NC]
        RewriteRule (.*) https://%1exampleB.com$1 [R=301,L]
</VirtualHost>

【讨论】:

    【解决方案2】:

    我从来没有做过这样的事情,但试试你的虚拟主机文件中的重定向选项。首先启用重写

    sudo a2enmod rewrite
    

    然后在你的虚拟主机文件中

    RewriteEngine on
    RewriteCond %{SERVER_NAME} =exampleA.com [OR]
    RewriteCond %{SERVER_NAME} =www.exampleA.com
    RewriteRule ^ https://exampleB%{REQUEST_URI} [END,NE,R=permanent]
    

    在此处了解更多信息:https://httpd.apache.org/docs/2.4/rewrite/remapping.html

    它采用原始域并重写到另一个域。在较旧的 apache 中,我记得它是这样的:

    <VirtualHost *:80>
      ServerName www.domain1.com
      Redirect / http://www.domain2.com
    </VirtualHost>
    

    【讨论】:

    • 我想我只会重定向 www 但我想要所有子域
    • 但这是我不知道如何为所有域编写此问题的问题,例如 *
    猜你喜欢
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 2014-08-28
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    相关资源
    最近更新 更多