search
top

Редирект 301 url с параметрами

При переносе сайта с одной системы управления контентом (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]

Возможные варианты можно сделать по аналогии, если что — пишите комментарии.

21 комментарий to “Редирект 301 url с параметрами”

  1. Галина:

    Как сделать правильно перенаправление, если используются параметры, например
    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 и прикрепляет его к новой ссылке, как это исправить?

  2. admin:

    А изначальный 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]

  3. Таня:

    Уррраа! Редирект url с параметрами упорно не получался, пока не увидела эту статью и комментарий.
    Очень круто, спасибо!

  4. к о т:

    Бился с перенаправлением ссылок с параметрами 5 часов, спасибо за решение, использовал последний параметр в ссылке, всё работает! Спасибо!!!

  5. Alex:

    А не в курсе как сделать перенапрвление с:
    http://site.com/111.html на:
    http://site.com/111.html#spread=relations

  6. Игорян:

    Отличная статья! все работает супер!

  7. Евгений:

    Помогите сделать редирект со всех страниц вида site.ru/new.php?id=1…n на страницы типа site.ru/new/123/ уже третий день мучаюсь….

  8. admin:

    Вот такой код помогает?

    Options +FollowSymLinks
    RewriteEngine on
    RewriteCond %{QUERY_STRING} id=1
    RewriteRule ^(.*)$ /new/123/? [R=301,L]

  9. Евгений:

    ммм он мне сразу после site.ru/11/ выдает id статьи

  10. Евгений:

    не совсем не так работает он редиректит все страницы с любым id на страницу site/123/

  11. admin:

    А что за CMS? Я проверил, указанный мною код работает на Joomla или просто, впринципе.

    Что у тебя в htaccess написано?

  12. Евгений:

    Без CMS сам сайт пишу на php вот хочу ЧПУ сделать .htacces пустой щас

  13. admin:

    Дело в том, что в статье привден код не для ЧПУ, а для переадресации с одной страницы на другую. ЧПУ обеспечивает не переадресацию, а замену символов в URL.

  14. Евгений:

    ну да вот мне надо сделать так сначала адрес сделать другой и потом переадресовывать
    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 переадресовывать на новые

  15. Илья:

    Проблема схожая с той, что у Евгения…

    Нужно сделать редирект со страницы

    /index.php?option=com_content&view=article&id=553

    на

    /news/market/1628/

    Помогите, позязя…

  16. Борис:

    Подскажите пожалуйста как сделать редирект со всех страниц типа

    site.com/111.php?a=1&b=3…
    на:
    site.com/222.php?a=1&b=3…
    с теми же параметрами

  17. Сергей:

    Большое спасибо, статья спасла!

  18. Voldemar:

    Не понятным остается одно: как передать значение параметра в URL.

    например
    …?lang=ru
    …./ru/

    …?lang=en
    …./en/

  19. Денис:

    Добрый день! Вопрос крайне тупой — как сделать редирект с передачей параметра.

    Redirect 301 / http://site.com?s=1/

    s=1 не передается

    Т.е. редирект со старого домена на новый сайт с передачей параметра s=1 (для отслеживания обращений по старому домену)

    Спасибище !!!

  20. Sergey:

    Спасибо! Помогло, правда сначала писал ошибку о цикличности переадресации. Потом все настроил.

  21. Виталик:

    Добрый день. У меня сайт на Вордпрессе.

    Были ссылки такого типа: /%postname%/

    Изменил на /%postname%-%post_id%.html

    Подскажите, пожалуйста, как прописать правило для редиректа?

    Спасибо.

Оставить комментарий

top