Перевод сайта на мультиязычность через .htaccess

F
На сайте с 16.12.2017
Offline
0
471

Приветствую, знатоки!

Итак.

Было

site.ru/page1.php

site.ru/page2.php

...

Хочется оставить страницы на русском и отображать по прежнему,

но все имеющие дополнение в урл (например en|de|fr) направлять по этому типу, то есть отображать с языком (например /en/) , а направлять на прежнюю страницу с параметром.

site.ru/([a-z]{2}/ -> site.ru/index.php?lang=$1

site.ru/([a-z]{2}/pageX.php$ -> site.ru/pageX.php?lang=$1 (pageX - произвольные названия страниц)

site.ru/([a-z]{2}/pageX.php?(.*)$ -> site.ru/pageX.php?$2&lang=$1 ($2 - разные параметры, например get=1 &test=0...)

На данный момент тестирую в Денвере такой код



RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.site.ru
RewriteRule (.*) https://site.ru/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^site.ru
RewriteRule (.*) https://site.ru/$1 [R=301,L]


RewriteEngine On
RewriteRule ^/([a-z]{2})/$ /?language=$1 [L,QSA]
RewriteRule ^/([a-z]{2})/([A-Za-z0-9-_]+)\.php$ /$2.php\?language=$1 [L,QSA]
RewriteRule ^/([a-z]{2})/([A-Za-z0-9-_]+)\.php(.*)$ /$2.php$3\&language=$1 [L,QSA]

В логах почему -то упрямо отдается так

[Sat Dec 16 16:33:09 2017] [error] [client 127.0.0.1] File does not exist: D:/home/site.ru/www/en

Соответственно перенаправляет на 404 страницу

---------- Добавлено 16.12.2017 в 18:55 ----------

Код странно вставился, на самом деле так

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www.site.ru
RewriteRule (.*) https://site.ru/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^site.ru
RewriteRule (.*) https://site.ru/$1 [R=301,L]

RewriteEngine On
RewriteRule ^/([a-z]{2})/$ /?language=$1 [L,QSA]
RewriteRule ^/([a-z]{2})/([A-Za-z0-9-_]+)\.php$ /$2.php\?language=$1 [L,QSA]
RewriteRule ^/([a-z]{2})/([A-Za-z0-9-_]+)\.php(.*)$ /$2.php$3\&language=$1 [L,QSA]

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