Псевдоним Htaccess для мультиязычного сайта без перенаправления
У меня многоязычный сайт
- example.com - английский
- example.com/it/ - итальянский
Мне нужен example.it/(.*) для обработки запросов на example.com/it/$1 без перенаправления на example.com. Просто чтобы остаться на example.it и обработать все запросы на example.com/it/
1 ответ
Как объясняется в документации модуля переписывания Apache, эти примеры должны указывать правильное направление.
Пример использования параметра запроса на добавление lang
:
RewriteEngine On
RewriteLog /var/log/apache2/rewrite_log
RewriteLogLevel 3
RewriteRule ^/(it|fr|no)/(.*)$ /$2?lang=$1 [L,QSA]
Правила следят за тем, чтобы все запросы к http(s)://example.com//... были внутренне переписаны, так что вызывается http(s)://example.com/...? Lang =. При отправке ссылок старайтесь использовать только относительные ссылки.
Пример использования переменной среды LANG
который может быть оценен по какому-либо сценарию
RewriteEngine On
RewriteLog /var/log/apache2/rewrite_log
RewriteLogLevel 3
RewriteRule ^/(it|fr|no)(/.*)$ $2 [L,E=LANG:$1,QSA]
Обратите внимание, что я не запускал этот код, я просто записал его, поэтому, возможно, вам придется немного его адаптировать, если упоминается какая-либо ошибка. Также попробуйте использовать RewriteLogLevel (значения 0-9), это действительно помогает понять, что происходит внутри механизма переписывания.