Помогите настроить mod_rewrite под смену языков на сайте

verfaa

Профессор
Регистрация
29 Янв 2007
Сообщения
417
Реакции
49
Есть сайт под управлением cms modx revo
С помощью переменной GET ?lang=en и ?lang=ru осуществляется переход на русскоязычную или англоязычную версии сайта.
Помогите написать правило, при котором любая страница вида site.com/ru/ site.com/page_tratata/ru/ будет подгружать с сервера страницы site.com/?lang=ru site.com/page_tratata/?lang=ru
Важно чтобы оно работало на всех страницах сайта, включая главную
 
Попробуйте что-то вроде:
Код:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)(ru|en|ua)[/]*$ /index.php/$1?lang=$2 [L]

Но зависит конечно от случая. Этот реврайт будет работать только если явно передан какой-то язык (присутствует ru/en/ua...).

Лучше покажите что у вас УЖЕ есть в .htaccess?
 
Последнее редактирование модератором:
site.com/ru/ site.com/page_tratata/ru/ будет подгружать с сервера страницы site.com/?lang=ru site.com/page_tratata/?lang=ru
Код:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} .*/ru/
RewriteRule (.*)/ru/$ /$1/?lang=ru [QSA,L]

RewriteCond %{REQUEST_URI} .*/en/
RewriteRule (.*)/en/$ /$1/?lang=en [QSA,L]

Замечу, что работать будет ТОЛЬКО если присутствует "/" в конце урла (так был задан вопрос). Если слэша в конце не будет - работать не будет... Желательно написать правило которое будет добавлять слэш в конец УРЛА если его там нету.

PS: с главной может не сработать, не уверено может ли .* принимать пустое значение...
 
Последнее редактирование:
Желательно написать правило которое будет добавлять слэш в конец УРЛА если его там нету.
Слэш в конец УРЛа:
Код:
# slash
RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
RewriteRule .* %1/ [R=301,L]
 
Слэш в конец УРЛа:
Код:
# slash
RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
RewriteRule .* %1/ [R=301,L]
Я бы написал так:
Код:
RewriteCond %{REQUEST_URI} !.*\/$
RewriteRule (.*) /$1/ [R=301,L]
или так
Код:
RewriteCond %{REQUEST_URI} .*[^/]$
RewriteRule (.*) /$1/ [R=301,L]
 
Последнее редактирование:
Назад
Сверху