При переносе сайта с одной системы управления контентом (cms) на другую, в целях сохранения веса определенной страницы (внешние ссылки, page rank, посетители) поисковики рекомендуют использовать redirect 301 (переадресацию) со старого адреса на новый. Наиболее простым и доступным решением на хостинге с веб-сервером Apache является использование файла .htaccess, размещенного в корне сайта.
Если прежний адрес страницы был таким http://site.com/about.html, а новый адрес, например http://new-site.com/about, тогда все просто, в файл .htaccess необходимо добавить следующие строки:
Redirect 301 /about.html http://new-site.com/about
Гораздо интереснее, когда в старом сайте использовались параметры ссылок, например, часто применяемый id. Пример, старый адрес страницы: http://site.com/?id=54
А новый адрес уже с ЧПУ: http://site.com/some-page.html
Чтобы найти решение, не являясь специалистом в настройке серверов, мне потребовалось несколько часов. В итоге, вот, что нужно вставить в файл .htaccess, чтобы получить нужный результат:
Options +FollowSymLinks RewriteEngine on RewriteCond %{QUERY_STRING} id=54 RewriteRule ^(.*)$ /some-page.html? [R=301,L]
Убираем index.php из url
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /index.php RewriteRule .* / [R=301,L]
Возможные варианты можно сделать по аналогии, если что — пишите комментарии.
24 комментария
Как сделать правильно перенаправление, если используются параметры, например
RewriteEngine On
RewriteCond %{QUERY_STRING} ^ELEMENT_ID=4383$
RewriteRule /trained/articles\.php$ /it/informacia? [L,R=301]
Redirect 301 /trained/articles.php /it/informacia/
в итоге должен получиться mysait.ru/it/informacia/, а в результате получается mysait.ru/it/informacia/nod/?ELEMENT_ID=4383 он выдирает этот id и прикрепляет его к новой ссылке, как это исправить?
А изначальный URL какой?
mysait.ru/trained/articles.php
?
А это откуда? ELEMENT_ID=4383 ?
Если начальный адрес заканчивается на &ELEMENT_ID=4383. тогда попробуй так:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{QUERY_STRING} &ELEMENT_ID=4383
RewriteRule ^(.*)$ /it/informacia/? [R=301,L]
Уррраа! Редирект url с параметрами упорно не получался, пока не увидела эту статью и комментарий.
Очень круто, спасибо!
Бился с перенаправлением ссылок с параметрами 5 часов, спасибо за решение, использовал последний параметр в ссылке, всё работает! Спасибо!!!
А не в курсе как сделать перенапрвление с:
http://site.com/111.html на:
http://site.com/111.html#spread=relations
Отличная статья! все работает супер!
Помогите сделать редирект со всех страниц вида site.ru/new.php?id=1…n на страницы типа site.ru/new/123/ уже третий день мучаюсь….
Вот такой код помогает?
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{QUERY_STRING} id=1
RewriteRule ^(.*)$ /new/123/? [R=301,L]
ммм он мне сразу после site.ru/11/ выдает id статьи
не совсем не так работает он редиректит все страницы с любым id на страницу site/123/
А что за CMS? Я проверил, указанный мною код работает на Joomla или просто, впринципе.
Что у тебя в htaccess написано?
Без CMS сам сайт пишу на php вот хочу ЧПУ сделать .htacces пустой щас
Дело в том, что в статье привден код не для ЧПУ, а для переадресации с одной страницы на другую. ЧПУ обеспечивает не переадресацию, а замену символов в URL.
ну да вот мне надо сделать так сначала адрес сделать другой и потом переадресовывать
RewriteEngine On
RewriteRule ^new/([^/\.]+)/?$ new.php?id=$1 [L]
вот теперь все нормально страница доступна еще по одному адресу site.ru/new/123/ и site.ru/new.php?id=123
вот моя проблема как все адреса вот этого вида site.ru/new.php?id=123 переадресовывать на новые
Проблема схожая с той, что у Евгения…
Нужно сделать редирект со страницы
/index.php?option=com_content&view=article&id=553
на
/news/market/1628/
Помогите, позязя…
Подскажите пожалуйста как сделать редирект со всех страниц типа
site.com/111.php?a=1&b=3…
на:
site.com/222.php?a=1&b=3…
с теми же параметрами
Большое спасибо, статья спасла!
Не понятным остается одно: как передать значение параметра в URL.
например
…?lang=ru
…./ru/
…?lang=en
…./en/
Добрый день! Вопрос крайне тупой — как сделать редирект с передачей параметра.
s=1 не передается
Т.е. редирект со старого домена на новый сайт с передачей параметра s=1 (для отслеживания обращений по старому домену)
Спасибище !!!
Спасибо! Помогло, правда сначала писал ошибку о цикличности переадресации. Потом все настроил.
Добрый день. У меня сайт на Вордпрессе.
Были ссылки такого типа: /%postname%/
Изменил на /%postname%-%post_id%.html
Подскажите, пожалуйста, как прописать правило для редиректа?
Спасибо.
Здравствуйте! С точки зрения SEO, следует всегда использовать 301 редирект , в случае, если вы хотите перенаправлять и пользователей и поисковых роботов на новый адрес.
Здравствуйте
есть проблема не могу сам решить
есть много адресов типа
/shop/category/77/virobi-z-dereva/virobi-z-dereva.html
слово /category/ на новом сайте не используется в урл
как массово сделать 301 редирект со всех входящих страниц из поиска с этой вставкой на существующий адрес без этой вставки?
одним словом как убрать корректно вставку /category/?
Помогите вырезать часть url в адресе. Сейчас ссылка такого вида: http://site.ru/catalog/pages/pages.php?cat_id=3&page_id=125 Нужно сделать такой вид: http://site.ru/catalog/pages/pages.php?page_id=125 Как правильно удалить: cat_id=3&