将子域迁移到子目录,同时在单独的服务器上运行

我目前正在一个跨两个不同的服务器托pipe的网站上工作。 一台服务器托pipe主站点(example.co.uk),另一台服务器托pipe电子商务应用程序(Magento),目前可通过shop.example.co.uk访问。

我可以完全访问托pipe电子商务网站的服务器,并可以完全访问域configuration; 然而,主要网站托pipe在共享主机上,我唯一的访问是通过FTP。

如果没有将电子商务应用程序移动到共享主机,有没有什么办法可以让我们通过example.co.uk/shop访问电子商务网站,只有这个url? 我们只想访问从子目录(为SEO的原因),所以进入shop.example.co.uk域名应该redirect到example.co.uk/shop。

我目前正在试图确定mod_proxy是否在共享主机上可用,尽pipe看起来不太可能。 这是唯一的方法来做到这一点?

编辑:感谢所有迄今为止的答案。 为了解释一下理由,这是一个客户,他希望主办自己的主场地,因为它是由一家独立的公司开发和pipe理的。

mod_proxy确实是我现在可以想到的最可行的解决scheme ,如果你想保持这些网站的物理分离。 基本上它是一个RewriteRule[P]标志的教科书示例:

 Given Rule Resulting Substitution ---------------------------------------------- ---------------------------------- ^/somepath(.*) http://otherhost/otherpath$1 [P] http://otherhost/otherpath/pathinfo via internal proxy 

正如理查德所说,通过将这两个网站合并在一起,您可以避免在途中产生不必要的问题,在这种情况下,从长远来看,这可能会更好。

虽然我有一个奇怪的想法 – 如果mod_proxy支持是一个问题,你不能在你的共享主机上做任何事情,那么为什么不切换angular色?

让我们使您的电子商务服务器的主服务器通过代理服务器提供example.co.uk下的所有内容到您的共享主机 (现在使用一些其他的虚拟域名 – 比如site.example.co.uk )和example.co.uk/直接购物 。 然后将所有非代理stream量redirectsite.example.co.ukexample.co.uk

问题依然存在 – 为什么要摆在首位呢? 如果你要这么做,那么把所有的网站移动到电子商务服务器将是最合理的。 特别是在您可能正在电子商务服务器上遇到一些资源限制的情况下。 再加上一些延迟代理这一切似乎真的没有必要。 我能想到的唯一的情况是,如果你的共享主机上有一些非常专用的环境/工具链,这些环境/工具链很难在当前的电子商务服务器上复制。 但说实话,我怀疑是这样的。

请详细说明您将这些网站分开的理由。 也许我们可以find一些更好的解决scheme来解决您的潜在需

如果你准备经历修改你的magento安装的痛苦,那么是的,你可以做到这一点

您将必须通过magentoconfiguration/数据库并将shop.example.com的任何参考更新为example.com/shop(如果要使用shop.example.com中的301redirect,则必须执行此操作)

这样,你可以将其移动到子目录,然后将主站点移动到主目录中,并导入所有该站点(如果您不能反向代理,我不相信共享主机会为您执行此操作)

一旦完成所有的事情,你可以创build一个标准的301 shop.example.comredirect到example.com/shop

也不要忘记,除非你有一个通配符ssl或ssl的域和子域你需要一个新的ssl证书

不幸的是,有没有简单的方法来实现这一点,domain.com/shop方法假定/ shop是本地文件夹而不是远程文件夹。 您可以使用许多.htaccess方法来redirect客户端,或者屏蔽url,但这很可能会导致您在search引擎optomisation方面更多的问题。 是否有一个特定的原因,您不能将两个服务器合并在一起使用所需的URL格式?

如果两台服务器位于同一个networking中,则可以考虑在它们之间build立一个iscsi / nfs连接,使远程文件夹成为“本地”文件夹(符号链接)。

如果你的共享主机上有mod_proxy可用,你可以使用类似于:

 RewriteEngine On RewriteRule ^shop/(.*)$ http://shop.example.co.uk/$1 [P] 

[P]是代理标志,需要mod_proxy ,这应该允许您的电子商务网站function(我不熟悉Magento)作为获取该服务器的请求应该是以前一样。

但是,这并不妨碍直接访问http://shop.example.co.uk ,你也可能要解决这个问题。

希望这有助于。