【问题标题】:How to have different /servers with same Domain?如何拥有具有相同域的不同/服务器?
【发布时间】:2015-08-13 01:49:52
【问题描述】:

我在 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:

    重写引擎开启
    RewriteCond %{REQUEST_URI} ^/mexico RewriteRule ^(.*)$ http:// 示例。富。 com/$1 [R=301,L,P

这对我有用。如果我想要另一个/server,我只需用另一个名字重复,例如“委内瑞拉”。子域名将被 .htaccess 隐藏,并且这个“example.foo.com”看起来像这个“foo.com/venezuela”。

【问题讨论】:

  • 如果您想要不同的网站,每种语言,请按照我的回答。如果您只是想支持不同的翻译语言,那么请使用翻译插件,让自己的生活更轻松。

标签: php wordpress server subdomain


【解决方案1】:

您所描述的是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 请求至今仍被认为是糟糕的 SEO,并增加了一些(通常是较小的)加载时间。

【讨论】:

    【解决方案2】:

    您将需要使用子域,并在您的域注册商处设置 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 记录”。

    一些注册商只是让您输入“您的子域”、服务器的 IP 和 TTL(生存时间)。

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

    然后添加另一个“A 记录”,仅用于您的其他子域、 服务器的 IP 和 TTL。

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

    【讨论】:

    • 我知道它可以用子域来完成,但我想要子目录,例如:vice.com/pt_brvice.com/es_co 所以它将是一个指向服务器的子目录,并且在该服务器中是一个 worpress 安装.
    • 嗨尼奥,你实现了你想做的事吗?我和你有同样的挑战。请分享解决方案。
    • @erTugRul 嘿,我从来没有注意到你的问题。希望您从问题中得到解决方案,我一做就更新了。
    【解决方案3】:

    您的解决方案是:

    1.您可以为每台服务器使用A记录和子域。

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

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

    【讨论】:

    • 您可以允许远程服务器连接到您的数据库,而无需云数据库解决方案。默认情况下,只有 localhost 可以连接,但您可以轻松添加(白名单)其他主机。
    • 这不是秘密,因为我说他可以使用多个服务器来处理静态内容,这意味着数据库是单一的并且在主服务器上。如果他想在多服务器上运行单个数据库,他需要云数据库。否则他可以使用方法1或2。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多