根据 URL 路径重定向到不同的服务器


redirect to different server based on url path

我为一个将内部网集成到其旧网站的客户创建了一个新网站。

新网站目前在不同的服务器上,但是当域 A 记录指向新服务器时,旧站点(和内联网)显然无法访问,但我需要保持其内联网处于活动状态。 其内部网的路径为:abc.com/intranet

有没有办法让URL路径直接到旧服务器? 例如:

abc.com - new website loads on new server
abc.com/intranet - old website loads on older server

如果不可能,我想我正在考虑在abc.com上为内联网创建一个子域。 任何想法都值得赞赏。

你需要

使用Apache RewriteRule使用mod_rewrite。这可以放在服务器根目录上的.htaccess文件中,也可以直接放在 Apache 配置文件中。

如果您想将example.com重定向到 example.com/intranet ,那么这是应该适合您需求的 Apache RewriteRule

RewriteEngine on
RewriteRule ^(.*)$ /intranet [L,R=301]

这将获取放置此RewriteRule的网站上的任何URL,并将其重定向到/intranet。该/intranet也可以是完整的 URL,如以下示例所示:

RewriteEngine on
RewriteRule ^(.*)$ http://example.com/intranet [L,R=301]

编辑:重新阅读您的问题后,我不能100%确定上述答案按原样适合您。 所以我认为,如果您正在描述如何将一个 URL 路径从一台服务器指向另一台服务器,您会这样做。这会放置在新服务器上:

RewriteEngine on
RewriteRule ^/intranet(.*)$ http://old_example.com/intranet [L,R=301]

这将获取来自new_example.com/intranet的任何 URL 并将其重定向到 old_example.com/intranet .

另一个编辑:由于原始海报表明服务器将完全更改IP,因此旧服务器的子域是最好的方法。如果您将域完全切换到不同的 IP,则无法按照您描述的方式重定向一个域上的内容。两台服务器都需要使用活动但不同的域名处于活动状态,以便发生您希望发生的情况。

abc.com/intranet 是 Web 服务器公开的虚拟文件系统中的路径,因此无法从不同的 Web 服务器提供内容。您在这里有 2 个选项。

  1. 在两台服务器前面放置一个反向代理,并根据原始客户端请求从服务器 A 或 B 获取内容。

  2. 正如您所说,创建一个子域并将/Intranet 重定向到新的子域。

希望这有帮助!