Page 2 of 2

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

Posted: Tue Apr 05, 2022 11:49 am
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']];
}


у вас в темпелйты выставляется язык и запоминается

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

Posted: Tue Apr 05, 2022 8:07 pm
by tubepartnership
Вероятно закешировалось что-то в браузере до этого .. Сейчас с ?force_lng=main действительно работает (проверил в приватной вкладке)
Спасибо за помощь!

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

Posted: Wed Apr 06, 2022 5:06 am
by admin
NP )

PS сообщение выше я не туда запостил, сорри , оно не по этой теме )

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

Posted: Thu Apr 14, 2022 9:41 am
by serge
похоже разобрался)
эту строчку
#RewriteRule ^/(.*)$ $1?force_lng=en&%{QUERY_STRING} [L]
заменил на
RewriteRule ^$ ?force_lng=en&%{QUERY_STRING} [L]
и вроде заработало ок

сорян, за беспокойство)

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

Posted: Thu Apr 14, 2022 10:12 am
by admin
Отлично, без проблем)

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

Posted: Wed Apr 20, 2022 7:33 pm
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, либо работает редирект при заходе... а мне надо и то, и то :)
Замкнутый круг.

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

Posted: Wed Apr 20, 2022 7:45 pm
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 перевод."

как именон происходит переключение и на каком урле получается русский?

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

Posted: Wed Apr 20, 2022 7:59 pm
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/"... но это уж как крайний вариант

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

Posted: Thu Apr 21, 2022 7:53 am
by admin
разобрались что редирект по языку браузера и по geo_ip это разные вещи