Как сделать 301 редирект с без www на www и наоборот?

J
На сайте с 07.10.2010
Offline
163
38193

Добрый день. Есть 2 сайта. У одного главное зеркало www.site1.ru, у другого, наоборот, site2.ru. В случае с первым сайтом нужно сделать редирект с site1.ru на www.site1.ru, а в случае со вторым с www.site2.ru на site2.ru. Что нужно прописать в .htaccess? Пользовался поиском, испробовал многие варианты, но ничего не выходит. Благодарю за помощь.

DV
На сайте с 01.05.2010
Offline
644
#1

#Перенаправление с www.domain.com на domain.com:

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*) http://%1/$1 [L,R=301]



#Перенаправление с domain.com на www.domain.com:
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} (.+)$
RewriteRule ^(.*) http://www.%1/$1 [L,R=301]
VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
П
На сайте с 07.11.2008
Offline
85
#2

Из примера:

RewriteCond %{HTTP_HOST} ^domen\.ru
RewriteRule ^(.*)$ http://www.domen.ru/$1 [R=permanent,L]

Перенаправляет всех без www на www.domen ru

Во втором случае www подставьте наоборот.

J
На сайте с 07.10.2010
Offline
163
#3

с www на без www вроде получилось. А вот наоборот нет.

---------- Добавлено 20.08.2013 в 10:03 ----------

Пустота:
Из примера:
Цитата:
RewriteCond %{HTTP_HOST} ^domen\.ru
RewriteRule ^(.*)$ http://www.domen.ru/$1 [R=permanent,L]

получилось. Благодарю.

---------- Добавлено 20.08.2013 в 10:20 ----------

В случае с редиректом с без www на www возникла другая проблема. По некоторым внутренним ссылкам вместо перехода на требуемые страницы происходит перенаправление на www.site.ru/index.php. В чем может быть дело?

---------- Добавлено 20.08.2013 в 10:25 ----------

поправил внутренние ссылки (дописал www), все заработало.

---------- Добавлено 20.08.2013 в 10:27 ----------

а чем этот вариант:

DenisVS:
#Перенаправление с www.domain.com на domain.com:
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*) http://%1/$1 [L,R=301]
#Перенаправление с domain.com на www.domain.com:
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} (.+)$
RewriteRule ^(.*) http://www.%1/$1 [L,R=301]

отличается от этого:

Пустота:
RewriteCond %{HTTP_HOST} ^domen\.ru
RewriteRule ^(.*)$ http://www.domen.ru/$1 [R=permanent,L]

Какой более правильный?

DV
На сайте с 01.05.2010
Offline
644
#4
Jaroslav:
Какой более правильный?

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

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