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
Будут вопросы, пишите.


Оставить комментарий
походу, это поле для благодарностей, а не для вопросов. но всеже спрошу
хотелось бы подробней по этому вопросу:
Для использования необходимо включить модули mod_alias (для поддержки директив Redirect, RedirectPermanent и RedirectMatch) и/или mod_rewrite (для использования реврайта) в php.ini
где эти модули включаются и как?
Здравствуйте, требуется сделать редирект 301 с помощью .htaccess…
Не могу во всем этом разобраться. Я хочу на сайте изменить структуру. Весь контент переноситься с com_content на com_k2. Так как я не могу разобраться как перенести категории, то мне проще перенести каждый материал в отдельности. Если Вам не сложно, напишите, пожалуйста, образец, чтобы в нем говорилось, что страница такая-то переехала на страницу такую-то, таких страниц у меня 217.
Для того чтобы было понятно допустим страница старая http://www.doblest-chest.ru/index.php?option=com_content/... а новая http://www.doblest-chest.ru/index.php?option=com_k2...
Строчка RewriteRule ^article.jsp?id=(.*)$ /news.htm [L,R=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 выводил?
Оставить комментарий