.htaccess редирект по языку

12
M
На сайте с 15.05.2013
Offline
97
1493

Ребята, помогите пожалуйста составить правило для .htaccess

Задача: пользователь у которого язык в браузере отличный от русского переходит 301ым редиректом на другой домен.

Для тех у кого русский ничего не происходит.

Сейчас:

RewriteCond %{REQUEST_URI} (.*)

RewriteRule ^(.*)$ https://site.com/$1 [L,R=301]

тоесть просто идет переход на другой домен на туже статью. Надо что бы переход был только для пользователей у который язык не русский

SeVlad
На сайте с 03.11.2008
Offline
1609
#1
masimar:
Задача: пользователь у которого язык в браузере отличный от русского переходит 301ым редиректом на другой домен.

А что если я захочу почитать на "не русском"?🍿

Не делай так. Предлагай юзеру др. адрес, но не редиректь принудительно. (Если и редиректить, то не 301 в htaccess , а скриптами с использованием кук)

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
M
На сайте с 04.12.2013
Offline
223
#2

masimar, как выше написали, такое имеет смысл делать только на «нейтральном» домене, на котором в идеале вообще нет собственного контента.

---------- Добавлено 27.11.2018 в 19:38 ----------

P.S. Указание на осн. язык браузера передается в начале значения заголовка Accept-Language (в одном заголовке может быть неск. языков). Указание на язык может быть частью указания на «локаль», т.е. после кода языка может идти дефис. Для mod_rewrite используйте условие с переменной формата %{HTTP:header} (см. п. 4 тут).

---------- Добавлено 27.11.2018 в 19:49 ----------

miketomlin:
такое имеет смысл делать только на «нейтральном» домене, на котором в идеале вообще нет собственного контента.
Естественно, тут я писал не о многоязычном сайте, использующем только один домен.
Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts
M
На сайте с 15.05.2013
Offline
97
#3
SeVlad:
А что если я захочу почитать на "не русском"?🍿

Не делай так. Предлагай юзеру др. адрес, но не редиректь принудительно. (Если и редиректить, то не 301 в htaccess , а скриптами с использованием кук)

У меня есть сайт в котором нужно именно так сделать.

Может кто то помочь?

Gerga
На сайте с 02.08.2015
Offline
94
#4

masimar,


RewriteCond %{HTTP:Accept-Language} ^ru [NC] # если в http заголовке Accept-Language найдена "ru" локаль
RewriteRule ^$ https://www.google.ru [L,R=301] # сделать редирект на сайт https://www.google.ru

Но это не язык браузера, а системный язык.

SeVlad
На сайте с 03.11.2008
Offline
1609
#5
Gerga:
Но это не язык браузера, а системный язык.

Предпочтительный язык useragent-а :)

Gerga
На сайте с 02.08.2015
Offline
94
#6

SeVlad, да, я провел тест и поменял язык браузера, но HTTP_ACCEPT_LANGUAGE по прежнему показывал системный язык. Мой браузер Google Chrome.

---------- Добавлено 27.11.2018 в 20:55 ----------

Браузер-браузеру рознь. Порылся в настройках своего браузера, но не нашел настройку позволяющею указывать HTTP_ACCEPT_LANGUAGE для браузера.

SeVlad
На сайте с 03.11.2008
Offline
1609
#7
Gerga:
я провел тест и поменял язык браузера, но HTTP_ACCEPT_LANGUAGE по прежнему показывал системный язык. Мой браузер Google Chrome.

Я не знаю что ты менял и как ведёт себя эта гуглоподелка, но есть стандарты, которые должны работать во всех нормальных браузерах.

1. как есть https://i.imgur.com/ar0z5dm.jpg

2. Меняю приоритетный язык https://i.imgur.com/DDuwveX.jpg

3. Результат https://i.imgur.com/XH37Vzf.jpg

Gerga
На сайте с 02.08.2015
Offline
94
#8

SeVlad, я веду к тому, что не стоит рассчитывать и надеяться, что во всех случаях HTTP_ACCEPT_LANGUAGE покажет язык браузера! (!) Т.е. язык, которым юзается браузер!

SeVlad
На сайте с 03.11.2008
Offline
1609
#9
Gerga:
я веду к тому, что не стоит рассчитывать и надеяться, что во всех случаях HTTP_ACCEPT_LANGUAGE покажет язык браузера! (!)

язык браузера != предпочитаемая локаль (язык).

Я думаю ты просто не там что-то менял.

Gerga
На сайте с 02.08.2015
Offline
94
#10

SeVlad, я вас понял, но я еще и понял ТСа.

masimar:
у которого язык в браузере отличный от русского переходит



---------- Добавлено 27.11.2018 в 21:16 ----------

SeVlad:

язык браузера != предпочитаемая локаль (язык).
Я думаю ты просто не там что-то менял.

Да. В Google Chrome нельзя, насколько я опредлелил, поменять предпочитаемую локаль. Она равняется системной. Да, возможно я не там смотрел.

в Google Chrome можно поменять локаль, если покликать в насройках языка. Я был не прав.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий