【问题标题】:Mod rewrite to reidrect all traffic to different domain, except for set list of foldersMod重写以将所有流量重定向到不同的域,但设置的文件夹列表除外
【发布时间】:2014-12-24 16:33:57
【问题描述】:

我们正在逐步将客户网站迁移到新的系统和域名。 与此同时,我们需要两个网站都在运行,但要共享同一个域的部分内容。

我现在已将主域指向新服务器 - www.newserver.org

在这台服务器上,我需要 Apache 将不在允许文件夹列表中的所有请求重定向回旧服务器 - 现在位于:www.oldserver.org(保留域之后的路径)。

我还需要在通过其 IP 地址访问时无需重定向即可访问新服务器。

我对 apache 配置的最佳尝试:

DocumentRoot /var/www
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/landing/
RewriteCond %{REQUEST_URI} !^/admin/
RewriteCond %{REQUEST_URI} !^/user/
RewriteCond %{REQUEST_URI} !^/sites/
RewriteCond %{REQUEST_URI} !^/scripts/
RewriteCond %{HTTP_HOST} ^www.newserver.org$
RewriteRule   ^(.*)  http://www.oldserver.org/$1  [NC,R=301,L]

任何人都可以协助正确的 RewriteCond 和订购吗? 目前所有请求 - 甚至到指定的文件夹都在重定向。

----也试过了:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.newserver.org$
RewriteCond %{REQUEST_URI} !^(landing|admin|user|sites|scripts) [NC]
RewriteRule   ^(.*)  http://www.oldserver.org/$1  [NC,R=301,L]

在另一个论坛上建议,但这仍然会将所有请求重定向到那些文件夹

【问题讨论】:

    标签: apache mod-rewrite configuration


    【解决方案1】:

    您不需要检查HTTP_HOST,除非两个域都由同一个系统提供服务。

    在检查REQUEST_URI 时,您缺少前导斜杠

    RewriteCond %{REQUEST_URI} !^/(landing|admin|user|sites|scripts) [NC]
    

    【讨论】:

      【解决方案2】:

      试试这个:

      RewriteEngine On
      RewriteCond %{HTTP_HOST} ^www.newserver.org$
      RewriteRule ^(?!(landing|admin|user|sites|scripts)/)(\w+/.*)$   http://www.oldserver.org/$2 [NC,R=301,L]
      

      【讨论】:

      • 感谢您发布答案。不幸的是,没有运气 - 这种变化根本没有重定向。
      • 测试的网址是什么? (您是否在测试前将域名替换为实际域名?)。您是否使用http://www.newserver.org/admin/ 和http://www.newserver.org/administer/ 之类的东西?第一个不应重定向,第二个应重定向到 www.oldserver.org/administer/。如果您使用的是 IP 地址,则不应发生重定向。
      猜你喜欢
      • 2015-03-13
      • 2017-10-23
      • 2014-06-30
      • 2012-11-20
      • 1970-01-01
      • 2017-08-13
      • 1970-01-01
      • 2018-02-06
      • 2021-12-14
      相关资源
      最近更新 更多