Псевдоним 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), это действительно помогает понять, что происходит внутри механизма переписывания.

Другие вопросы по тегам