是否可以根据URL中的文件夹名称redirect到另一个地理上分开的服务器?

我正在寻找的是根据他们的语言select引导访问者在地理上分开的服务器。

我们的url结构像mydomain.com/enmydomain.com/th (泰文)。 就像现在一切托pipe在同一台服务器上一样。 但是,对于select第五种语言的访问者,我们最好从位于泰国境内的服务器提供服务。 泰国访客的网页加载速度显着提高。

我的平台是Apache,Linux,MySQL – 常规的LAMP堆栈。 那么…是否有可能以这种方式configurationApache,以便按照上面所述的方式redirect所有stream量? 请记住,域名不能改变,我们也不能使用子域名。 它必须在该文件夹中的格式。

谢谢,
米^ E

如果您可以在事后将人员redirect到本地化的子域名,那么这将起作用:

RewriteEngine on RewriteRule ^/th(.*)$ http://th.example.com$1 [R,L] RewriteRule ^/en(.*)$ http://en.example.com$1 [R,L] 

不幸的是,由于您运行的是单个主机名,这意味着您仅限于DNS(GeoIP)中的内容,并且无法处理URL的path部分中的任何内容,因此您无法根据它。

基本上,你被拧紧给你的限制。 向那些制定规则的人解释,不pipe他们多么跺脚,你都不能改变互联网物理学的规律。 就个人而言,我不知道http://th.example.com/什么丑陋的…

这可能是一个碰碰运气的方法,但考虑使用一个地理位置感知的DNS服务器 – 一个build议是GeoIPDNS TinyDNS的一个下拉式替代叉。

这个想法是,你在你的机器上托pipe一个权威的名字服务器,并且基于IP它会自动将用户redirect到一台服务器或另一台服务器。 用户的机器应该cachingDNS请求,以便查询只是偶尔进行一次(即不是每个页面请求)。

您可以在两台服务器上同时托pipe/ en和/ th版本,DNS解决scheme将把用户发送到地理位置正确的服务器。 用户仍然可以select他们希望查看哪个版本的站点,除了最初的DNS请求(当然,您将在两台服务器上托pipe您的DNS以提供回退),地理位置是透明的,不会增加延迟。

将通过反向代理服务器的文件夹“/ th”别名到泰文服务器的IP地址。

Apache本身将是反向代理,顺便说一下…

在这里查看更多信息: http : //httpd.apache.org/docs/2.0/mod/mod_proxy.html#proxypassreverse

这样做会这样

 www.example.com/th/hi-there 

由apache转换为

 thai.ip.add.ress/hi-there 

它对用户来说是完全透明的,没有redirect或类似的东西。