我有一个网站www.xyz.com,其中包含特定国家/地区X的内容。此外,我还有另一个网站目标指向同一个域名的子域名,例如subdomain.xyz.com
我可以使用任何免费的geo ip数据库和一些php脚本来实现重定向,我成功地做到了这一点,但现在问题是
访问网站www.xyz.com的国家Y的人被重定向到subdomain.xyz.com,但他想要检查www.xyz.com它再次将它们重定向到subdoamin.xyz.com。
我希望这是谷歌的方式,所以如果假设从阿联酋访问google.com的人被重定向到google.ae但是如果他们点击转到Google.com,他们会被重定向到google.com而没有任何问题。
我需要为我的网站实现这个..
网站是wordpress。请建议我最好的解决方案。
确定以下是我使用过的代码..
/**
* Example 6
*
* This is what google probably do with users around the world
*
* Multiple declatations
*/
// Start by including CountryDetector class
include("./src/CountryDetector.class.php");
// You dont need to create instance of this class you can access only on static context
// Google.co.uk
CountryDetector::redirect("AE", "http://uae.jobscow.com");
// Google Germania
CountryDetector::redirect(array("DE", "AT"), "http://google.de"); // Ausrian and German users
// Google China
CountryDetector::redirect("CN", "http://google.cn");
// Google sweden
CountryDetector::redirect("SE", "http://google.se");
// Google norwegia
CountryDetector::redirect("NO", "http://google.se");
// Google serbia
CountryDetector::redirect("RS", "http://google.rs");
// AND SO ON...
// Finally: Google.com - international
CountryDetector::redirect("international", "http://google.com");
>
您建议我在此
中做出哪些更改答案 0 :(得分:2)
使用引用者检查:如果他们到达www.xyz.com且referer不是国家站点,则重定向到国家/地区站点。
如果他们点击国家/地区网站上的“转到www.xyz.com”,则引用者将是country.xyz.com,然后您不会重定向。
您还可以使用cookie来存储客户对此事项的偏好。
RFC2616 section 14.36解释了Referer头字段,this article显示了如何在php中使用它。
编辑:作为替代方案 - 因为当lars声明用户或路径上的某些内容可能会停用它/删除标题时 - 您可以使用www.xyz上的虚拟“登录页面”来提示访问者来自的服务器国家/地区服务器:<a href="www.xyz.com/fromcountryserver.php">Go to xyz</a>
或者为什么不添加请求变量,指示浏览器来自国家/地区服务器。愚蠢的例子只是为了表明意图
<a href="www.xyz.com/index.php?comingfrom=countryserver">Go to xyz</a>
或这些技术的混合。更多的工作,但除非一些疯子重写URL客户端,它应该始终有效。
答案 1 :(得分:2)
我认为这只是谷歌用于这个愚蠢伎俩的cookie。
让我建议你在一些HTTP嗅探器上导航到谷歌。那是一个极具教育意义的企业。
答案 2 :(得分:0)
答案 3 :(得分:-1)
在您的网络服务器上使用重定向(如果您使用,则使用Apache)或通过javascript(重定向功能)将其插入页面。
如果您正在使用Apache,如果您使用MaxMind获取访问权限(可以使用其他服务,我认为没有问题),您可以使用mod_alias配置重定向,即:
GeoIPEnable On
GeoIPDBFile /path/to/GeoIP.dat
# Redirect one country
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^CA$
RewriteRule ^(.*)$ http://www.canada.com$1 [L]
# Redirect multiple countries to a single page
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(CA|US|MX)$
RewriteRule ^(.*)$ http://www.northamerica.com$1 [L]
更多信息:http://httpd.apache.org/docs/current/mod/mod_alias.html
你也可以通过PHP获取客户端的地址并构建一个像这样的javascript函数(但Apache解决方案更优雅):
function redir()
{
if(checkCountryViaIp(ip) == countryx)
{
window.location = "countryxpage.php"
}
//etc...
}