Как правильно написать редирект через .htaccess

MK
На сайте с 17.06.2009
Offline
15
2731

Собственно говоря я в это не силен, перелопатил инфу но вменяемого варианта не нашел:gm:, прошу знающих помочь составить правило редиректа в .htaccess.

Ситуация такая было так http://www.site.ua/catalog/Tank.html, а стало так http://www.site.ua/product/Tank.html

Каталог /catalog/ изменился на / product/, но проблема в том что и /catalog/ тоже частично будет присутствовать.

Были такие варианты урлов

http://www.site.ua/catalog/TKKK.html

http://www.site.ua/catalog/Tank.html

А стали такие

http://www.site.ua/catalog/TKKK.html

http://www.site.ua/product/Tank.html

Что можно сделать?

Farrell
На сайте с 08.04.2010
Offline
3
#1

Простой редирект (в файле .htaccess или httpd.conf для Apache):

Redirect 301 / http://www.you.com/new.htm

где:

Redirect 301 - это инструкция, говорящая что страница перемещена

/ - означает, что все с верхнего уровня сайта, включая все подкаталоги, будет переадресовано

http://www.you.com/new.htm - новая страница или сайт (не забывайте поставить последний "/", если переадресация идет на сайт).

Чтобы переадресовать только страницу, сохранив PR старой страницы:

Redirect 301 /old/old.htm http://www.you.com/new.htm

где:

/old/old.htm - путь и имя старой страницы

Аналогичный синтаксис для переадресации сайта:

RedirectPermanent / http://www.you.com/

Пример переадресации каталога:

RedirectPermanent /old-directory http://www.domain.com/new-directory/

Например, зашедших в test переадресуем на www.test.com, остальных на enter.test.com (порядок следования записей важен):

Redirect permanent /test http://www.test.com/

Redirect permanent / http://enter.test.com/

Farrell добавил 14.04.2010 в 19:55

Использование mod_rewrite (прописывается в файле .htaccess):

Ставшая классической задача слияния имена сайта с www и без него, решается так:

Options +FollowSymLinks

RewriteEngine on

RewriteCond %{HTTP_HOST} ^yoursite\.com

RewriteRule ^(.*)$ http://www.yoursite.com/$1 [R=permanent,L] .

или альтернативный синтаксис:

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]

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

Обозначение [R=301,L] означает: перенаправить клиента и отправить ему код статуса 301 (R=301) и сделать это правило последним (L).

Редирект старого домена на новый:

Options +FollowSymLinks

RewriteEngine on

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

Например, если необходимо чтобы вместо rewrite.htm загружался файл rewrite.html, добавьте в .htaccess:

RewriteEngine on

RewriteBase /

RewriteRule ^rewrite\.htm$ rewrite.html [R=permanent]

Для замены всех .htm файлов .html файлами:

RewriteEngine on

RewriteBase /

RewriteRule ^(.*)\.htm$ $1.html [R=permanent]

MK
На сайте с 17.06.2009
Offline
15
#2

Спасибо конечно за материал, я его уже читал в Инете. Но к сожалению как применить к моему варианту так и не понял. Или мне все страницы надо прописывать в редирект!?!?!

F
На сайте с 12.04.2009
Offline
24
#3
Farrell:

Редирект старого домена на новый:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

Спасибо, ценная информация. Хочу уточнить вот что:

Как правильно сделать, вот к примеру, поставил редирект, и можно сразу убрать сайт со старого домена, или подождать пока сайт на новом доменном имени проиндексируется? Читал в поиске серча, что лучше сначала оставить прежний сайт, а потом его удалить после проиндексрования нового. И изменять нельзя директории на новом сайте, они должны быть такие же как и в старом. Верно?

ICQ 5девять5-194-645
Farrell
На сайте с 08.04.2010
Offline
3
#4
Foundseo:
Спасибо, ценная информация. Хочу уточнить вот что:
Как правильно сделать, вот к примеру, поставил редирект, и можно сразу убрать сайт со старого домена, или подождать пока сайт на новом доменном имени проиндексируется? Читал в поиске серча, что лучше сначала оставить прежний сайт, а потом его удалить после проиндексрования нового. И изменять нельзя директории на новом сайте, они должны быть такие же как и в старом. Верно?

Я не особо часто сталкивался с такой ситуацией, но советую последовать совету тех, кто писал темы там, где вы читали. Посмотрите еще что-нибудь по поводу вашего вопроса, проследите, что говорят люди. На вашем месте, я бы перестраховался и удалил бы старый сайт после индексирования нового.;)

F
На сайте с 12.04.2009
Offline
24
#5
Farrell:
Я не особо часто сталкивался с такой ситуацией, но советую последовать совету тех, кто писал темы там, где вы читали. Посмотрите еще что-нибудь по поводу вашего вопроса, проследите, что говорят люди. На вашем месте, я бы перестраховался и удалил бы старый сайт после индексирования нового.;)

Вот как я понял нужно сделать:

Сначала прописываем в robots.txt нового домена

User-Agent: Yandex
Host: www.site.ru

Это нужно чтобы Яндекс выбрал главное зеркало, а уже потом прописываем в .htaccess редирект старого домена на новый:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

И еще, директории должны быть одинаково расположены, менять их не рекомендуется. К примеру site1.ru/doc/1.html и site2.ru/doc/1.html совпадают, тут сделано все верно.

Поправьте пожалуйста если что-то упустил.

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