如何使用相同域的不同/服务器?

时间:2015-05-30 04:51:25

标签: php wordpress server subdomain

我在wordpress上有一个网站foo.com,我希望这样做foo.com/mexicofoo.com/venezuela,为每个具有相同域名的城市提供不同的/server(没有wordpress多站点)。

我不是要求按城市检测ip,而是要求服务器和/或域/ DNS配置来执行此操作。

我知道还有其他方法可以实现这一目标,但想知道这个。

以下是一个例子:

http://www.vice.com/pt_br

http://www.vice.com/es_co

编辑解决方案

这是我的解决方案:

  1. 创建一个子域,example.foo.com指向另一台服务器。
  2. 在主服务器上创建一个文件夹,其中包含我想要的名称 链接,例如'墨西哥'
  3. 在此文件夹中创建了一个.htaccess:

    RewriteEngine ON RewriteCond%{REQUEST_URI} ^ /墨西哥 RewriteRule ^(。*)$ http://示例。 FOO。 com / $ 1 [R = 301,L,P

  4. 这对我有用。如果我想要另一个/server我只是重复另一个名字,例如'委内瑞拉'。子域名将被.htaccess隐藏,而这个' example.foo.com'将会是这样的' foo.com/venezuela'。

3 个答案:

答案 0 :(得分:8)

您所描述的是reverse proxy

可以使用apache的扩展程序mod_proxy进行设置。就个人而言,我还没有触及过,但我的看法答案是建议你看看nginx。它是一个死的简单反向代理。您可以轻松地在apache之前运行nginx,拦截请求并将它们传递到不同的服务器或直接发送html文件。

nginx-config可以简单如下:

server {
    listen       80;
    server_name  example.org  www.example.org;
    location /mexico/ {
        # We could have an apache server running on another port...
        proxy_pass http://127.0.0.1:8000;
    }
    location /venezuela/ {            
        proxy_pass http://123.123.123.123:8000;  # ...or another server.
    }
    location /bulgaria/ {
        # Or just serve some static files 
        # In apache, do you set up a virtual host for this? christ.
        root /var/www/static_html;

        # If static html is all you have, what is apache even doing 
        # on your server? Uninstall it already! (As I said; opionated!)
    }
}

编辑:几年后找到我自己的答案,我想补充说OP选择使用的301重写规则会添加另一个浏览器必须等待的请求在重定向到真实地址之前。 301请求至今仍被认为是糟糕的搜索引擎优化,并增加了一些(通常是次要的)加载时间。

答案 1 :(得分:1)

您需要使用子域名,并在域名注册商处设置A记录,以将每个子域名映射到不同的服务器。

这是一个相关的SO问题。请注意,它已关闭,但所选答案就是您的目标:Subdomain on different host

one.yourdomain.com - >指向ServerA

two.yourdomain.com - >指向ServerB

GoDaddy的网站上也有信息。如果您不使用GoDaddy,则流程类似:https://support.godaddy.com/help/article/4080/managing-a-domain-names-subdomains

您进入域名注册商,您可以在其中修改域名设置。它可能与DNS有关。您想要添加新的" A记录"。

有些注册商只是让你输入" yoursubdomain",服务器的IP和TTL(生存时间)。

因此,请输入您的第一个子域,您希望它指向的服务器的IP,以及通常为3600的TTL(如果它要求)。

然后添加另一个" A记录",仅针对您的其他子域, 服务器的IP和TTL。

重复您需要的许多子域和服务器。

答案 2 :(得分:1)

您的解决方案是:

1.您可以使用A记录和每个服务器的子域名。

2.您可以使用您的网络服务器配置将用户中继到目标服务器(Apache,NGINX& etc等)

但在这里,我看到你从多服务器询问Wordpress。您只能拥有静态内容的多服务器(CDN),但您的数据库必须位于一个位置,除非您想使用cloud DB