【问题标题】:Apache2 redirect domain to internal pageApache2 将域重定向到内部页面
【发布时间】:2015-09-01 16:31:27
【问题描述】:

我有两个域指向一个由 apache2 托管的站点(例如 a.com 和 b.com)。主域是 a.com,可以从该域访问网站。

但是,页面 a.com/test/ 应该重定向到 b.com(而不是 b.com/test/)以显示来自服务器的内容,如果直接访问 b.com,也应该显示此内容。

我认为反向代理可能是可行的方法,但没有任何运气,我想知道这是否可以在我的 .htaccess 文件中完成(两个域都指向服务器)。

【问题讨论】:

    标签: apache .htaccess redirect reverse-proxy mod-proxy


    【解决方案1】:

    您不需要反向代理。只要 a.com 和 b.com 的 DNS 都指向同一个 apache 服务器,您就可以通过使用 vhosts 和重定向来进行设置。

    对于 b.com 虚拟主机,只需将其设置为 DocumentRoot 测试文件夹(完整路径)。如果这不可行,您也可以通过 htaccess 执行此操作。

    对于重定向,将其添加到 a.com 文档根目录中的 htaccess 文件中:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} a\.com$ [NC]
    RewriteRule ^test/(.*)$ http://b.com/$1 [L,R=301]
    

    如果您无法在 vhost 中设置 DocumentRoot,对于 b.com

    RewriteCond %{HTTP_HOST} b\.com$ [NC]
    RewriteCond $1 !^test/
    RewriteRule ^(.*)$ /test/$1 [L]
    

    【讨论】:

    • 谢谢!如果我正在使用 wordpress,这是否仍然有效,因此 /test/ 目录已经被重写(因为 wordpress 的永久链接)?
    • 如果您使用的是 wordpress,那么删除部分永久链接会混淆 wordpress 并导致其无法正常工作,对于第二部分(b.com),您可能需要寻找 wordpress具体解决方案,如插件
    • 即使在htaccess中,wordpress也会查看请求的URI,在请求的URI中不会看到/test/,所以会返回404。没关系你在 htaccess 中做的。
    • 我在尝试此操作时遇到内部服务器错误,来自日志:Request exceeded the limit of 10 internal redirects due to probable configuration error. 任何想法为什么会发生这种情况?谢谢。
    • 与您的 htaccess 文件中已有的 wordpress 规则或其他 mod 重写规则是否存在冲突?
    猜你喜欢
    • 1970-01-01
    • 2021-08-08
    • 2016-04-20
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 2015-08-11
    相关资源
    最近更新 更多