редирект 301 по условию

G
На сайте с 07.09.2010
Offline
39
645

Добавил на сайт мультиязычность, все адреса внутри сайта изменились с www.сайт.com/материал на www.сайт.com/RU/материал, но все материалы также доступны и по старым адресам вида www.сайт.com/материал (что создает множество дублей) на которые собственно и ведут внешние ссылки. Как в .htaccess установить 301 редирект по условию:

если в адресе нет значения /ru или /en то выполнять 301 редирект на www.сайт.com/RU/имяматериала
если в адресе есть значение /ru или /en - пропустить без изменений.

например, при вводе адреса: www.сайт.com/статья375 выполнялась переадресация на www.сайт.com/ru/статья375, а при вводе www.сайт.com/ru/статья375 - адрес оставался без изменений.

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

P.S. CMS - Joomla 1.5, мультиязычность - Joom!Fish

aka_Puhh
На сайте с 22.09.2010
Offline
17
#1

При использовании .htaccess нет такого как в языках программирования конструкции if(){}else{}, но есть регулярные выражения, в вашем случае нужно смотреть в сторону mod_rewrite.

код должен выглядеть примерно так...

RewriteEngine on

RewriteCond %{REQUEST_URI} *\/ru\/* [OR]

RewriteCond %{REQUEST_URI} *\/en\/* [OR]

RewriteRule ^(.*)$ $1 [L]

RewriteRule ^(.*)$ /ru/$1 [R=301,L]

Правда я не тестировал... вроде должно работать 🍿

G
На сайте с 07.09.2010
Offline
39
#2
aka_Puhh:
RewriteEngine on
RewriteCond %{REQUEST_URI} *\/ru\/* [OR]
RewriteCond %{REQUEST_URI} *\/en\/* [OR]
RewriteRule ^(.*)$ $1 [L]
RewriteRule ^(.*)$ /ru/$1 [R=301,L]

ошибка 500 при обращении в корень сайта :(

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