Вместо 200 ответа возвращает 301. В чем ошибка?

nickicool
На сайте с 11.12.2009
Offline
102
2407

Привет.

Подскажите, пожалуйста, как сделать, чтобы после редиректа с домена без www на домен с www, возвращался 200 код ответа сервера, а не 301.

В хтаксесс пишу:

RewriteCond %{HTTP_HOST} ^(.*) [NC]

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

или

RewriteCond %{HTTP_HOST} ^domain\.ru

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

Оба варианта рабочие - если адрес написан без www перенаправляют на тот же адрес с www. Но, код ответа браузеру отдается не 200, а 301. По моему должен быть сначала 301 и тут же 200, но такого нет. В чем ошибка?

nickicool добавил 17.02.2011 в 20:56

И еще. Если невозможно проверить код ответа сервера для сайта сервисом яндекса http://webmaster.yandex.ru/server-response.xml для двух вариантов (с и без www), то это значит, что в яндексе эти домены/зеркала еще не склеены? Там ведь можно проверить ответ только для добавленных в панель сайтов. Значит если добавлен сайт без www, а проверяем ответ с www и видим отказ, то домены пока не склеены. Правильно?

nickicool добавил 17.02.2011 в 21:21

Отвечу сам же по редиректу... :) Настроить хтаксесс я не знаю как более правильно, чтобы сервер отдавал 200, если домен написан с www, а на php это сделать просто. Вот ловите кому надо:


if (!strstr($_SERVER['HTTP_HOST'], 'www.'))
{
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
exit();
}

Если без www, то 301, иначе 200 ответ.

Остался вопрос по яндексу и склейке доменов. Подскажите плиз.

R
На сайте с 04.10.2010
Offline
27
#1
nickicool:
RewriteCond %{HTTP_HOST} ^(.*) [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]

или

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

RewriteEngine On

RewriteCond %{HTTP_HOST} ^sate.ru$ [NC]

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

попробуйте

nickicool
На сайте с 11.12.2009
Offline
102
#2
ryno:

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

Да, вот этот вариант дает 200 если с www и 301, если без - работает как надо. Спасибо любезный!

R
На сайте с 04.10.2010
Offline
27
#3
nickicool:
Да, вот этот вариант дает 200 если с www и 301, если без - работает как надо. Спасибо любезный!

на здоровье.

У вас нет проблем со слешем на конце.

www.sate.ru/111

и

www.sate.ru/111/

лишние страницы такие в индексе не пупаются?

nickicool
На сайте с 11.12.2009
Offline
102
#4

Вроде нормально работает и с слешем и без, думаю это никак не влияет на работу редиректа, если вы об этом. У меня урлы со слешем на конце.

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