301 редирект через .htaccess на новые страницы, некоторые ньюансы
Совсем недавно, в связи с оснащением сайта клиента системой управления, мне потребовалось сделать редирект со старых страниц сайта на новые. Все можно было оставить как есть, но необходимо мне это было потому, что данные страницы сайта имели PR и ссылочную массу, поэтому терять этого не хотелось.
Для начала, я расскажу о типичных способах редиректа через htaccess. Информация не претендует на уникальность, взята она была отсюда.
При 301 редиректе получается склейка старого и нового адреса сайта. Параметры ТИЦ и ПР также будут переданы новому адресу URL.
301 редирект www на без-www
Применяется когда нужно перенаправить с URL вида http://www.site.ru на http://site.ru.
Необходимо вносить изменения в файл .htaccess в корневой директории сайта.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.site\.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
Редирект всех файлов в папке на один файл
Если вам больше не нужен определенный раздел сайта (например new1) и нужно перенаправить все запросы к папке (/new1) на один файл /new.php
Для этого в .htaccess добавляем следующий код
RewriteRule ^new1(.*)$ /new.php [L,R=301]
В случае если требуется перенаправить все файлы кроме одного, например:
все файлы из папки /new1 должны редиректится на файл /new.php, кроме файла /new1/photos.html, который должен перенаправляться на /new_photos.html, пишем следующий код:
RewriteRule ^new1/photos.html /new_photos.html [L,R=301]
RewriteRule ^new1(.*)$ /new.php [L,R=301]
Редирект динамического URL на новый файл
Если есть необходимость сделать редирект динамического URL на новый статический файл
RewriteRule ^article.jsp?id=(.*)$ /news.htm [L,R=301]
То есть теперь, запрос к файлу вида http://www.site.ru/article.jsp?id=3232 и/или http://www.site.ru/article.jsp?id=8745 будет отправлен на файл http://www.site.ru/news.htm
Редирект с помощью директивы Redirect или RedirectPermanent модуля mod_alias
Для использования необходимо включить модули mod_alias (для поддержки директив Redirect, RedirectPermanent и RedirectMatch) и/или mod_rewrite (для использования реврайта) в php.ini
Несмотря на такое страшное название, все просто.
Redirect 301 /old-page.html http://site.ru/new-page.html
или
Redirect permanent /old-page.html http://site.ru/new-page.html
Однако, у этого способа есть недостаток – все адреса, которые необходимо перенаправить, нужно перечислять один за одним, каждый отдельно.
В моем случае, как раз, было всего 4 файла, которые мне необходимо было перенаправлять. Причем были они вида:
razdel/ (как бы индексная страница)
razdel/old-page1.html
razdel/old-page2.html
razdel/old-page3.html
Теперь внимание, фишка, которую обнаружил экспериментальным путем. Страницу, которая является корнем, ставим в самый конец. Это пощволит перенаправлять посетителей на требуемые страницы. То есть
Redirect 301 razdel/old-page1.html http://site.ru/new-page1.html
Redirect 301 razdel/old-page2.html http://site.ru/new-page2.html
Redirect 301 razdel/old-page3.html http://site.ru/new-page3.html
Redirect 301 razdel/ http://site.ru/some-page.html
Будут вопросы, пишите.
Тэги: 301 redirect, htaccess, редирект со старой версии, 301 редирект
Оставить комментарий
Привет!
Вот ставлю Redirect 301 /foto/projects/ http://www.avtorsad.ru/projects/
В браузере все корректно работает, НО в поле Location выводит не http://www.avtorsad.ru/projects/ , а http://www.avtorsad.ru/projects/?secRef=projects
Вот как сделать чтобы он без ?secRef=projects выводил?
Оставить комментарий