Как отображать разные HTML-страницы в зависимости от страны пользователя?

Я использую Apache 2 и в настоящее время статические HTML-страницы.

Я хочу, чтобы мои посетители из еврозоны видели страницу с ценой в евро. Мои посетители из Великобритании должны увидеть страницу с ценой в фунтах стерлингов. Всем желаю увидеть цену в долларах.

Я понимаю, что это может быть вопрос, который больше подходит для https://superuser.com/, но я не знаю, является ли решение Apache 2 конфигурации или нужно ли мне использовать код.

Изменить: я готов попробовать любое клиентское или серверное приложение. Мне не нужно конвертировать валюты - это фиксированная цена в евро, фиксированная цена в фунтах стерлингов и фиксированная цена в долларах.


person Steve McLeod    schedule 24.12.2011    source источник
comment
В ASP.NET я делаю нечто подобное для наших интернет-магазинов. Я использую базу данных геолокации, то есть сопоставляю IP-адреса с кодами стран. Я предполагаю, что это нелегко решить с помощью чистой конфигурации веб-сервера.   -  person Uwe Keim    schedule 24.12.2011
comment
Как насчет использования чего-то вроде этого: kabo.nu/currency_widget или этого: techmug.com/ajax-currency-converter-with-google-api для конвертации валюты на муха? Единственный недостаток: у ваших пользователей должен быть включен javascript, чтобы это работало.   -  person redShadow    schedule 24.12.2011
comment
@UweKeim Я думаю, проблема в том, что он обслуживает статическую HTML-страницу без серверного приложения, которое могло бы выполнять преобразования ... я прав?   -  person redShadow    schedule 24.12.2011
comment
@redShadow Да, я думаю, ты прав.   -  person Uwe Keim    schedule 24.12.2011


Ответы (3)


Я бы использовал для этого 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]

(Предположим, что диапазоны IP-адресов 192.168.1.* и 192.168.3.* принадлежат ЕС, а 192.168.2.* и 192.168.4.* — Великобритании)

Я не очень уверен в использовании RewriteCond %{PATH_INFO} =/ для указания «запроса на корневой путь» и, таким образом, во избежание бесконечных циклов перенаправления. Может быть, это можно сделать лучше, используя LocationMatch или около того..?

person redShadow    schedule 24.12.2011


Используя javascript что-то вроде строк:

p.s. ответ redShadow лучше :-)

person T I    schedule 24.12.2011