我在wordpress上有一个网站foo.com
,我希望这样做foo.com/mexico
,foo.com/venezuela
,为每个具有相同域名的城市提供不同的/server
(没有wordpress多站点)。
我不是要求按城市检测ip,而是要求服务器和/或域/ DNS配置来执行此操作。
我知道还有其他方法可以实现这一目标,但想知道这个。
以下是一个例子:
编辑解决方案
这是我的解决方案:
在此文件夹中创建了一个.htaccess:
RewriteEngine ON RewriteCond%{REQUEST_URI} ^ /墨西哥 RewriteRule ^(。*)$ http://示例。 FOO。 com / $ 1 [R = 301,L,P
这对我有用。如果我想要另一个/server
我只是重复另一个名字,例如'委内瑞拉'。子域名将被.htaccess隐藏,而这个' example.foo.com'将会是这样的' foo.com/venezuela'。
答案 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)