кажется нашел
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: Редиректы при мультиязычности
Don't forget to run script update
-
tubepartnership
- Posts: 31
- Joined: Wed Oct 02, 2019 9:26 am
Re: Редиректы при мультиязычности
Вероятно закешировалось что-то в браузере до этого .. Сейчас с ?force_lng=main действительно работает (проверил в приватной вкладке)
Спасибо за помощь!
Спасибо за помощь!
Re: Редиректы при мультиязычности
NP )
PS сообщение выше я не туда запостил, сорри , оно не по этой теме )
PS сообщение выше я не туда запостил, сорри , оно не по этой теме )
Don't forget to run script update
Re: Редиректы при мультиязычности
похоже разобрался)
эту строчку
#RewriteRule ^/(.*)$ $1?force_lng=en&%{QUERY_STRING} [L]
заменил на
RewriteRule ^$ ?force_lng=en&%{QUERY_STRING} [L]
и вроде заработало ок
сорян, за беспокойство)
эту строчку
#RewriteRule ^/(.*)$ $1?force_lng=en&%{QUERY_STRING} [L]
заменил на
RewriteRule ^$ ?force_lng=en&%{QUERY_STRING} [L]
и вроде заработало ок
сорян, за беспокойство)
Re: Редиректы при мультиязычности
текс, оказывается проблема не решилась, а точнее теперь просто при заходе с любым языком, открывается 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, либо работает редирект при заходе... а мне надо и то, и то
Замкнутый круг.
есть у меня, допустим 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: Редиректы при мультиязычности
ок, для начала это реврайт а не редирект
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 перевод."
как именон происходит переключение и на каком урле получается русский?
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
Re: Редиректы при мультиязычности
я прописываю для каждого языка отдельно, так как были случаи, что забывали, создавали папку из двух символов site.com/js/ например (под скрипты) и потом ломали голову почему ничего не работает)) но это не суть, просто объясняю почему именно так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.comadmin wrote: Wed Apr 20, 2022 7:45 pm "site.com/ru/, НО, переключиться на EN уже не дает site.com - отображает все равно RU перевод."
как именон происходит переключение и на каком урле получается русский?
срабатывает 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: Редиректы при мультиязычности
разобрались что редирект по языку браузера и по geo_ip это разные вещи
Don't forget to run script update







