如何根据用户所在的国家/地区提供不同的 HTML 页面?
Posted
技术标签:
【中文标题】如何根据用户所在的国家/地区提供不同的 HTML 页面?【英文标题】:How do I serve a different HTML page depending on user's country? 【发布时间】:2011-12-24 13:12:13 【问题描述】:我使用的是 Apache 2,目前是静态 html 页面。
我希望我的欧元区访问者看到一个以欧元显示价格的页面。我的英国访问者应该会看到以英镑为单位的价格页面。每个人我都想看到以美元为单位的价格。
我意识到这可能是一个更适合https://superuser.com/ 的问题 - 但我不知道解决方案是 Apache 2 配置还是我是否需要使用代码。
编辑:我愿意尝试任何客户端或服务器端应用程序。我不需要转换货币 - 这是固定的欧元价格、固定的英镑价格和固定的美元价格。
【问题讨论】:
在 ASP.NET 中,我为我们的在线商店做了类似的事情。我使用地理位置数据库,即将 IP 地址映射到国家代码。我想这不是用纯 Web 服务器配置容易解决的。 使用这样的东西:kabo.nu/currency_widget 或这个:techmug.com/ajax-currency-converter-with-google-api 来即时转换货币怎么样?唯一的缺点是,您的用户需要启用 javascript 才能正常工作.. @UweKeim 我想问题是他提供的是静态 html 页面,没有可以进行转换的服务器端应用程序。我说的对吗? @redShadow 是的,我想你是对的。 【参考方案1】:我会为此使用 mod_rewrite:
RewriteEngine On
RewriteCond %HTTP_HOST =www.example.com [NC]
RewriteCond %REMOTE_ADDR ^192\.168\.1\.[0-9]+$ [OR]
RewriteCond %REMOTE_ADDR ^192\.168\.3\.[0-9]+$
RewriteCond %PATH_INFO =/
RewriteRule ^(.*)$ http://www.example.com/abc_euro.htm$1 [R=301,L]
RewriteCond %HTTP_HOST =www.example.com [NC]
RewriteCond %REMOTE_ADDR ^192\.168\.2\.[0-9]+$ [OR]
RewriteCond %REMOTE_ADDR ^192\.168\.4\.[0-9]+$
RewriteCond %PATH_INFO =/
RewriteRule ^(.*)$ http://www.example.com/abc_uk.htm$1 [R=301,L]
(假设192.168.1.*
和192.168.3.*
ip 范围来自欧盟,而192.168.2.*
和192.168.4.*
来自英国)
我不太确定使用RewriteCond %PATH_INFO =/
来指示“请求根路径”,从而避免无限重定向循环。也许使用LocationMatch
左右可以做得更好..?
【讨论】:
【参考方案2】:看看这个:
Country name from php或者这个:
http://teamtutorials.com/web-development-tutorials/how-to-get-a-users-geo-location#.TvXQ-dRSR2A【讨论】:
【参考方案3】:使用 javascript 类似于:
获取ip - http://www.hashemian.com/tools/visitor-IP.htm 找出它在哪里 - http://www.hackingspirits.com/cyb_forensic/fsic_articles/loc_place.html 根据需要转换货币或显示/隐藏p.s redShadow 的答案更好:-)
【讨论】:
以上是关于如何根据用户所在的国家/地区提供不同的 HTML 页面?的主要内容,如果未能解决你的问题,请参考以下文章
在 Chromecast 接收器应用中识别用户所在的国家/地区?