Интернационализация на поддоменах
Предположим у нас есть сайт с несколькими языковыми версиями. Адрес этого сайта, например domain.com, и работает он на мультидоменной UMI.CMS.
При выборе английской языковой версии, мы будем видеть адреса domain.com/en/page, а хотелось бы en.domain.com/page.
В этом случае, если разрабатывается не сильно нагруженный проект, можно внести некоторые изменения в .htaccess для реализации
Во первых, находим строку где подключается механизм mod_rewrite, такой строкой
RewriteEngine On
Сразу после это строки нам надо добавить одно условие, вот такой записью
RewriteCond %{REQUEST_URI} !^/en/admin
RewriteCond %{REQUEST_URI} ^/en
RewriteCond %{HTTP_HOST} !^en.
RewriteRule ^en(.*)$ http://en.%{HTTP_HOST}$1 [R=301,L]
Эта запись будет нас перенаправлять на en.domain.com с domain.com/en/
Теперь ищем в .htaccess самое главное правило в системе
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?path=$1&%{QUERY_STRING} [L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
И заменяем его вот на такую конструкцию, которая нам будет делать правильные запросы и перенаправлять нас с адресов en.domain.com/en/ на корректные
RewriteCond %{HTTP_HOST} ^en.
RewriteCond %{REQUEST_URI} ^/en
RewriteRule ^en(.*)$ $1 [R=301,L]
RewriteCond %{HTTP_HOST} ^en.
RewriteCond %{REQUEST_URI} !^admin
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?path=en/$1&%{QUERY_STRING} [L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{HTTP_HOST} !^en.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?path=$1&%{QUERY_STRING} [L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
для корректной работы, у вас должны быть поддомены смотрящие в ту же папку что и основной домен.