mod_rewrite объясните

A
На сайте с 15.10.2011
Offline
61
316

вообщем столкнулся с проблемой, из за того что разные страницы в индексе, пришлось использовать redirect

Мой редирект который я написал!

RewriteCond %{HTTP_HOST} ^site\.ru

RewriteRule ^(.*)$ http://www.site.ru/$1 [L]

RewriteRule ^((ru/|en/)(.*)) http://www.site.ru/$3 [L]

Это вроде бы решает такие проблемы как:

{

http://site.ru/ru/kluch -> http://www.site.ru/kluch

http://site.ru/ru/ -> http://www.site.ru

http://site.ru/en/kluch -> http://www.site.ru/kluch

http://site.ru/en/ -> http://www.site.ru

http://site.ru -> http://www.site.ru

http://www.site.ru/ru/kluch -> http://www.site.ru/kluch

http://www.site.ru/en/kluch -> http://www.site.ru/kluch

}

Но ответ от сервера 302, а надо 301:confused:

Надо решить.

Как это решить?

http://www.site.ru/en -> http://www.site.ru

http://www.site.ru/ru -> http://www.site.ru

http://www.site.ru/home -> http://www.site.ru

Ну и аналогично если без www

И как обрабатываются правила RewriteRule и RewriteCond а какой последовательности?

Что скажете по моему году?

SandyMan
На сайте с 13.06.2004
Offline
129
#1

Не проверяя, попробую предложить:

RewriteCond %{HTTP_HOST} ^site\.ru

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

RewriteRule ^((ru/|en/)(.*)) http://www.site.ru/$3 [L,R=301]

RewriteRule ^(ru|en|home)$ http://www.site.ru/ [L,R=301]

A
На сайте с 15.10.2011
Offline
61
#2
SandyMan:
Не проверяя, попробую предложить:

RewriteCond %{HTTP_HOST} ^site\.ru
RewriteRule ^(.*)$ http://www.site.ru/$1 [L,R=301]
RewriteRule ^((ru/|en/)(.*)) http://www.site.ru/$3 [L,R=301]
RewriteRule ^(ru|en|home)$ http://www.site.ru/ [L,R=301]

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

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