使用htaccess根据用户IP地址更改域名

时间:2012-09-23 13:38:49

标签: .htaccess mod-rewrite

我有一个服务于国际市场的网站,需要根据用户的IP使用3个不同的域名之一。

以下是用例:

  • 来自英国的用户IP,域名显示为www.example.co.uk
  • 来自澳大利亚的用户IP,域名显示为www.example.co.au
  • 所有其他IP,域名显示为www.example.com

在答案中,我不需要知道每个国家/地区使用的确切IP地址,因此您可以在答案中使用通用IP - 除非您想加倍努力并根据实际IP创建此IP地址来自给定的国家。

谢谢!

2 个答案:

答案 0 :(得分:1)

你需要install mod_geoip然后你可以使用mod_rewrite:

来使用它
# stuff for initializing mod_geoip
GeoIPEnable On
GeoIPDBFile /path/to/GeoIP.dat

RewriteEngine on

# rules per country
# User IP from the UK, domain name appears as www.example.co.uk
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^GB$
RewriteCond %{HTTP_HOST} !example.co.uk [NC]
RewriteRule ^/?(.*)$ http://www.example.co.uk/$1 [R,L]

# User IP from Australia, domain name appears as www.example.co.au
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AU$
RewriteCond %{HTTP_HOST} !example.co.au [NC]
RewriteRule ^/?(.*)$ http://www.example.co.au/$1 [R,L]

# All other IPs, domain name appears as www.example.com
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^GB$
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^AU$
RewriteCond %{HTTP_HOST} !example.com [NC]
RewriteRule ^/?(.*)$ http://www.example.com/$1 [R,L]

答案 1 :(得分:0)

我认为在索引文件开头使用PHP代码会更容易。 $_SERVER['REMOTE_ADDR']