Назад | Перейти на главную страницу

Можно ли перенаправить на другой географически отдельный сервер на основе имени папки в URL-адресе?

Я ищу, как направлять посетителей на географически разделенные серверы на основе их выбора языка.

Наши URL-адреса имеют такую ​​структуру, как mydomain.com/en и mydomain.com/th (Тайский). Как и сейчас, все размещено на одном сервере. Однако для посетителей, которые выбирают th язык, предпочтительно, чтобы мы обслуживали их с сервера, расположенного в Таиланде. Таким образом, скорость загрузки страницы для тайских посетителей значительно улучшается.

Моя платформа - Apache, Linux, MySQL - обычный стек LAMP. Итак ... можно ли настроить Apache таким образом, чтобы перенаправлять весь трафик так, как я сказал выше? Имейте в виду, что имя домена нельзя изменить, и мы не можем использовать субдомены. Он ДОЛЖЕН БЫТЬ в таком формате папки.

Спасибо,
м ^ е

Это, возможно, немного случайный подход, но рассмотрите возможность использования DNS-сервера с учетом геолокации - одно из предложений: GeoIPDNS заменяющая вилка TinyDNS.

Идея заключается в том, что вы размещаете на своем компьютере авторитетный сервер имен, и на основе IP он автоматически перенаправляет пользователей на тот или иной сервер. Компьютер пользователя должен кэшировать DNS-запрос, чтобы поиск выполнялся только время от времени (т.е. не каждый запрос страницы).

Вы можете разместить как / en, так и / th версии на обоих серверах, и решение DNS будет отправлять пользователей на географически правильный сервер. Пользователи по-прежнему могут выбирать, какую версию сайта они хотят просматривать, а геолокация прозрачна без увеличения задержки, за исключением первоначального запроса DNS (конечно, вы разместите свой DNS на обоих серверах, чтобы обеспечить откат).

Если бы вы могли перенаправлять людей на локализованные поддомены постфактум, это сработало бы:

RewriteEngine on
RewriteRule ^/th(.*)$ http://th.example.com$1 [R,L]
RewriteRule ^/en(.*)$ http://en.example.com$1 [R,L]

К сожалению, учитывая, что вы используете одно имя хоста, это означает, что вы ограничены вещами в DNS (GeoIP) и не можете иметь дело ни с чем в части пути URL-адреса, поэтому вы не можете принимать решения на основе Это.

По сути, вы облажались с учетом предоставленных вами ограничений. Объясните тем, кто устанавливает правила, что как бы они ни топали ногами и не надувались, вы не можете изменить законы Интернет-физики. Лично я не понимаю, что такого уродливого http://th.example.com/...

Псевдоним папки «/ th» через обратный прокси-сервер к IP-адресу тайского сервера.

Кстати, сам Apache был бы обратным прокси ...

См. Дополнительную информацию здесь: http://httpd.apache.org/docs/2.0/mod/mod_proxy.html#proxypassreverse

Это сделало бы так, чтобы

www.example.com/th/hi-there

преобразуется apache в

thai.ip.add.ress/hi-there

И он полностью прозрачен для пользователя, никаких перенаправлений или чего-то подобного.