Редиректы при мультиязычности

admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: Редиректы при мультиязычности

Post by admin »

кажется нашел

if ($_GET['force_lng'] and isset($my_keywords[$_GET['force_lng']])) {
setcookie('force_lng', $_GET['force_lng'], time() + 86400);
$lang = $my_keywords[$_GET['force_lng']];
} elseif ($_COOKIE['force_lng'] and isset($my_keywords[$_COOKIE['force_lng']])){
$lang = $my_keywords[$_COOKIE['force_lng']];
}


у вас в темпелйты выставляется язык и запоминается
Don't forget to run script update
tubepartnership
Posts: 31
Joined: Wed Oct 02, 2019 9:26 am

Re: Редиректы при мультиязычности

Post by tubepartnership »

Вероятно закешировалось что-то в браузере до этого .. Сейчас с ?force_lng=main действительно работает (проверил в приватной вкладке)
Спасибо за помощь!
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: Редиректы при мультиязычности

Post by admin »

NP )

PS сообщение выше я не туда запостил, сорри , оно не по этой теме )
Don't forget to run script update
serge
Posts: 930
Joined: Mon Mar 14, 2011 7:53 am

Re: Редиректы при мультиязычности

Post by serge »

похоже разобрался)
эту строчку
#RewriteRule ^/(.*)$ $1?force_lng=en&%{QUERY_STRING} [L]
заменил на
RewriteRule ^$ ?force_lng=en&%{QUERY_STRING} [L]
и вроде заработало ок

сорян, за беспокойство)
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: Редиректы при мультиязычности

Post by admin »

Отлично, без проблем)
Don't forget to run script update
serge
Posts: 930
Joined: Mon Mar 14, 2011 7:53 am

Re: Редиректы при мультиязычности

Post by serge »

текс, оказывается проблема не решилась, а точнее теперь просто при заходе с любым языком, открывается EN версия и переключить на свой язык можно только принудительно перейдя на папку site.com/ru/ (например)... примерно докадываюсь почему это, но как поправить не знаю... вот что происходит:

есть у меня, допустим 3 языка en,de,ru
site.com/ - en
site.com/de/ - de
site.com/ru/ - ru

htaccess такой:

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^de/(.*)$ $1?force_lng=de&%{QUERY_STRING} [L]
RewriteRule ^ru/(.*)$ $1?force_lng=ru&%{QUERY_STRING} [L]
RewriteRule ^(.*)$ $1?force_lng=en&%{QUERY_STRING} [L]

Auto redirect to existing language: https://site.com/{LANGUAGE}/{ORIGINAL_REQUEST}

И тут видимо проблема, так как site.com/en/ директории нет, он вроде как и не редиректит... по крайне мере с таким htaccess при заходе с языком ру он открывает EN версию.

Если закомментить нижнюю строчку, вот так:
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^de/(.*)$ $1?force_lng=de&%{QUERY_STRING} [L]
RewriteRule ^ru/(.*)$ $1?force_lng=ru&%{QUERY_STRING} [L]
#RewriteRule ^(.*)$ $1?force_lng=en&%{QUERY_STRING} [L]

то при заходе с RU языком, все окей - открывает site.com/ru/, НО, переключиться на EN уже не дает site.com - отображает все равно RU перевод. При таком раскладе корректно переключиться можно только на DE язык, опять же, по причине что есть папка de: site.com/de/

Получается либо работает "переключалка" языков включая EN, либо работает редирект при заходе... а мне надо и то, и то :)
Замкнутый круг.
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: Редиректы при мультиязычности

Post by admin »

ок, для начала это реврайт а не редирект
RewriteRule ^ru/(.*)$ $1?force_lng=ru&%{QUERY_STRING} [L]

для любого языка выгядит вот так

RewriteRule ^([^/]{2})/(.*)$ $2?force_lng=$1&%{QUERY_STRING} [L]

"site.com/ru/, НО, переключиться на EN уже не дает site.com - отображает все равно RU перевод."

как именон происходит переключение и на каком урле получается русский?
Don't forget to run script update
serge
Posts: 930
Joined: Mon Mar 14, 2011 7:53 am

Re: Редиректы при мультиязычности

Post by serge »

admin wrote: Wed Apr 20, 2022 7:45 pm ок, для начала это реврайт а не редирект
RewriteRule ^ru/(.*)$ $1?force_lng=ru&%{QUERY_STRING} [L]

для любого языка выгядит вот так

RewriteRule ^([^/]{2})/(.*)$ $2?force_lng=$1&%{QUERY_STRING} [L]
я прописываю для каждого языка отдельно, так как были случаи, что забывали, создавали папку из двух символов site.com/js/ например (под скрипты) и потом ломали голову почему ничего не работает)) но это не суть, просто объясняю почему именно так
admin wrote: Wed Apr 20, 2022 7:45 pm "site.com/ru/, НО, переключиться на EN уже не дает site.com - отображает все равно RU перевод."

как именон происходит переключение и на каком урле получается русский?
захожу с русским языком на сайт: site.com
срабатывает Auto redirect to existing language: https://site.com/{LANGUAGE}/{ORIGINAL_REQUEST}
открывается site.com/ru/
на этом этапе всё хорошо... далее... я хочу переключится на EN, жму
site.com/ авторедирект на РУ уже не срабатывает, но и язык не переключается... то есть я попадаю на
site.com/
но перевод все так же русский, а я хочу видеть английский. Или это в принципе не возможно при таком раскладе?) Есть конечно вариант-костыль: отправлять в этом случае юзера на site.com/en/ (прописав соотв RewriteRule ^en/(.*)$ $1?force_lng=en&%{QUERY_STRING} [L]), а там уже для поисковика прописать canonical без "/en/"... но это уж как крайний вариант
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: Редиректы при мультиязычности

Post by admin »

разобрались что редирект по языку браузера и по geo_ip это разные вещи
Don't forget to run script update
Post Reply