Я только что перевел свой сайт. По причинам SEO (чтобы избежать дублирования контента) я хочу, чтобы КАЖДЫЙ URL-адрес содержал язык. Например, www.racebooking.net/page.php
должно стать www.racebooking.net/en/page.php
. Затем часть /en/
будет преобразована в ?lang=en
.
Кроме того, пользователь должен иметь возможность выбрать предпочитаемый язык при просмотре веб-сайта.
Логика, которую я пытаюсь реализовать, следующая:
- ЕСЛИ URL-адрес
racebooking.net/en/page.html
, просто перейдите наpage.html?lang=en
независимо от того, на каком языке работает мой браузер. - ЕСЛИ URL-адрес
racebooking.net/it/page.html
, просто перейдите наpage.html?lang=it
независимо от того, на каком языке работает мой браузер. - ЕСЛИ URL-адрес
racebooking.net/page.html
, проверьте язык браузера. Если итальянский, преобразовать URL-адрес вracebooking.net/it/page.html
и перейти кpage.html?lang=it
, в любом другом случае преобразовать URL-адрес вracebooking.net/en/page.html
и перейти кpage.html?lang=en
Я написал это htaccess
RewriteCond %{THE_REQUEST} !^[A-Z]{3,}\s/[en|it]{1,1}/(.*)$ [NC]
RewriteCond %{HTTP:Accept-Language} ^it [NC]
RewriteRule ^$ /it/%1 [L,QSA,NC]
RewriteCond %{THE_REQUEST} !^[A-Z]{3,}\s/[en|it]{1,1}/(.*)$ [NC]
RewriteRule ^$ /en/%1 [L,QSA,NC]
Но ничего не происходит... он не обнаруживает отсутствие /en/
или /it/
! Похоже, первого RewriteCond не происходит...
Более того, это выглядит как конфликт с этим правилом.
RewriteRule ^(en|it)\/(.*)$ $2\?lang=$1 [L,QSA,NC]
Есть идеи?
РЕДАКТИРОВАНИЕ После долгого обсуждения @anubhava решил проблему! Его решение работает отлично. Итак, я отредактировал свой вопрос, чтобы сделать его более полезным для посетителей.