【问题标题】:How do I serve a different HTML page depending on user's country?如何根据用户所在的国家/地区提供不同的 HTML 页面?
【发布时间】: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 是的,我想你是对的。

标签: html apache ip-geolocation


【解决方案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】:
    【解决方案3】:

    使用 javascript 类似于:

    p.s redShadow 的答案更好:-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多