СОДЕРЖАНИЕ
Как настроить 301 редирект htaccess
301 Редирект при смене домена основного сайта
301 редирект при смене адреса страницы
Настроить редирект с www на домен без www в htaccess
Настроить редирект с http на https в htaccess
Редирект со страниц index.php, index.html
Редиректы с адресов со слэшами в конце и без них
Редирект на мобильную версию сайта
302 редирект
Как проверить правильно ли настроен редирект
Как сделать редирект без .htaccess
PHP редирект
Простейший javascript-редирект
Настроить 301 редирект в WordPress
Настройка редиректов в Joomla
Настройка редиректа на OpenCart
Примечания и ошибки
С переадресацией (она же – «редирект») сталкивался каждый пользователь интернета. Достаточно просто выбрать в поисковой системе любой сайт из выдачи и поисковая система автоматически перенаправит Вас на сайт. В этой статье мы расскажем о том, какие виды переадресации существуют и как их настроить.
- ^ — ограничение слева (начало строки);
- $ — ограничение справа (конец строки);
- . — любой символ;
- () — переменная;
- — экранирование (символ после считается обычным, а не спецсимволом);
- [] — диапазон значений;
- ! — спецсимвол отрицания.
- ? — символ повторяется 0 или 1 раз;
- + — 1 и более символов (до 65536);
- * — 0 и более символов (до 65536).
Как настроить 301 редирект htaccess
Начнем с 301 редиректа в htaccess. Во-первых, он представляет из себя автоматическую переадресацию с одного адреса на другой. Он вполне может применяться в том случае, когда сайт переводится с протокола http на https, когда сайт перенастраивается с «полноразмерных» адресов на ЧПУ (т.е. было https://www.karcher.xyz/content/news/31-01-2017/razdatka, стало https://www.karcher.xyz/ razdatka), а также для «склеивания» страниц-дублей. Во-вторых, 301 редирект сообщает поисковым системам, что «ребята, имеющийся у вас адрес уже не работает, поэтому идите вон туда», а они такие «ОК, учтем». Таким образом, переадресация происходит безболезненно, без потери позиций и ссылочной массы.
Но что будет, если «Ой, да ну нафиг? Буду я еще с переадресациями заморачиваться, только время потеряю!»? Можно сделать и так, НО… история «старой» страницы будет утрачена, а «новая» будет ранжироваться «с нуля». Как следствие – потеря позиций и ссылочной массы (это в лучшем случае).
Варианты применения 301 редиректа:
- Склейка доменов;
- Переезд сайта на другой адрес (может пригодиться при попадании сайта под какие-либо фильтры);
- Для увеличения показателей тИЦ, PR и увеличения трафика при покупке другого домена (настраивается редирект на ресурс, который нуждается в поднятии тИЦ и PR);
- При смене движка сайта (в этом случае настройка 301 редиректов строго обязательна, в противном случае гарантирована полная потеря трафика);
- при переезде с http на https;
- склейка «дублей»
и т.д., всех причин не перечислить.
301 Редирект при смене домена основного сайта
Итак, Вы решили сменить домен. Сразу же даем готовое решение:
- переделываем robots.txt на старом домене. Готовый текст файла:
- настраиваем 301 редирект для всех страниц сайта (кроме файла robots.txt) с помощью приведенного ниже кода:
Всё!
301 редирект при смене адреса страницы
Постраничный редирект (когда меняется адрес страницы) осуществляется с помощью приведенного ниже кода:
Именно этот код используется при «переезде» страниц, например, на ЧПУ.
Настроить редирект с www на домен без www в htaccess
Упоминание www. в адресе домена уже давно не является актуальным. Тем не менее сайтов с www. полно. Склеивание доменов с www. и без должно производиться в строго обязательном порядке, т.к. поисковые системы воспринимают эти 2 домена как 2 разных сайта с разными тИЦ, PR, посещаемостью, ссылочной массой и всем остальным. Следовательно, один из них – оригинал, а второй – «самозванец» с «ворованным контентом». Чтобы этого не происходило – домены с www. и без необходимо «склеить» с помощью 301 редиректа. Код настройки приведен ниже.
Код редиректа с www на без www в htaccess выглядит так:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
Теперь давайте разберемся с директивами.
RewriteEngine on/off – если выражаться простым человеческим языком – она служит выключателем 301 редиректа.
RewriteCond — в этой директиве прописываются условия для «срабатывания» следующей директивы.
RewriteRule — директива преобразования одного адреса в другой.
Настроить 301 редирект с http на https через htaccess
Переезд с http на https многие считают «современным трендом». Однако, на сегодняшний день данная мера является обязательной (хотя формально она таковой не является). И вот настал тот час, когда Вы получили SSL-сертификат, Ваш сайт уже работает и по http и по https. Все что осталось настроить в файле .htaccess 301 редирект с http на https версии страниц сайта. Код для настройки приведен ниже.
А вот код на обратный редирект с https на http. Как видите, отличие всего в 1 символ:
Редирект со страниц index.php, index.html
По большей части речь пойдет про склеивание дублей, которых может образовываться огромное количество.
Поскольку в подзаголовке упомянуты index.php и index.html – Вы уже догадались, что с помощью 301 редиректа мы будем избавляться от дублей главной страницы:
Однако, если у главной страницы есть дубль вида site.ru/index.php, вполне вероятно, что и у остальных страниц есть дубли вида site.ru/index.php/page.html (при оригинальном адресе site.ru/page.html). Это плохо, поэтому также требуется настройка 301 редиректа с помощью приведенного ниже кода:
Нередки случаи, когда у главной страницы есть дубль вида
site.ru/main.html, для которого так же необходимо прописывать 301 переадресацию на site.ru:
Либо альтернативный вариант:
Redirect 301 /main.html HYPERLINK «http://site.ru/» http://site.ru/
А вот теперь рассмотрим обратную ситуацию – когда Вы хотите склеить дубли, настроив переадресацию с site.ru на site.ru/main.html. Сделать это можно с помощью приведенного ниже кода.
Ну а если Вам важно, чтобы адреса всех внутренних страниц отображались без .html на конце, то redirect настраивается вот таким кодом:
Теперь о том как сделать редирект со страницы на страницу а именно с .htm на страницы .html. Для настройки такой переадресации достаточно добавить в .htaccess следующий код:
Редиректы с адресов со слэшами в конце и без них
Для начала рассмотрим еще один вид дублей страниц – страницы вида http://site.xyz/page и http://site.xyz/page/ — кроме слэша в конце, они ничем не отличаются. Настраивать redirect можно и с первой на вторую, и со второй на первую. Рассмотрим оба варианта:
Редирект с http://site.xyz/page на http://site.xyz/page/:
Redirect с http://site.xyz/page/ на http://site.xyz/page:
Причем абсолютно не важно, будет ли у Вас после редиректа слэш в конце адреса или нет. Главное – чтоб эти адреса были склеены с помощью 301 редиректа.
Редирект на мобильную версию сайта
Разумеется, если Ваш сайт работает на движке WordPress или Joomla, то настроить редирект на мобильную версию сайта можно с помощью плагинов.
Однако, Google является сторонником адаптивного дизайна. Следовательно, выделять отдельный домен/поддомен для мобильной версии не нужно. Т.е. в Google утверждают, что «если есть возможность обойтись без редиректов на мобильную версию – именно так и нужно поступать».
Но что делать, если без таких редиректов все-таки не обойтись?
JavaScript редирект
Однако, это не совсем верный способ, т.к. столь низкое разрешение далеко не у всех смартфонов, даже бюджетных. Гораздо правильнее заменить в коде число 480 на 720, большинство современных смартфонов имеет разрешение не менее, чем 1280 пикселей в высоту и 720 в ширину.
302 редирект
302 – это временная переадресация (по сути, это единственное отличие от 301 редиректа). Но где она может применяться?
Самый простой пример – акции в интернет-магазинах. Самым правильным решением в этом случае будет создание основного адреса, с которого будет производиться переадресация.
Т.е. есть постоянный адрес (например, https://inet-market.xyz/sales/) и сегодня с него происходит редирект на страницу https://inet-market.xyz/sales/december/, т.е. на страницу с декабрьскими акциями. Ну а через несколько дней 302 redirect перенастраивается на https://inet-market.xyz/sales/new-year/, т.е. на страницу с новогодними акциями.
И в таких ситуациях 302 редирект не только уместен, но и является самым правильным решением.
Основные причины применения 302 редиректа:
- Когда основная страница находится на стадии разработки/доработки/редактировании, поэтому ее надо скрыть от глаз посетителей, настроив временный редирект на другую страницу.
- Когда требуется, чтобы индексировалась и та страница, с которой происходит перенаправление, и та страница, куда перенаправляют;
- Когда требуется, чтобы в данный момент пользователи видели именно новую страницу, а не старую (например, если в будущем планируется «возвращение» к «старой» странице);
- Когда индексирование конечной страницы практически в будущем перестанет играть свою роль (т.е. когда страница создается временно);
- «Конечная» страница будет периодически меняться.
При правильном использовании, 301 и 302 редиректы могут оказать огромное влияние как на ранжирование сайта в поисковых системах, так и на комфортное пользование сайта посетителями.
Как проверить 301 редирект
Проверить 301 редирект крайне просто. Вводим в адресную строку старый адрес и смотрим, что будет происходить. Если редирект настроен правильно – адрес в строке изменится. Если нет – значит переадресация настроена неверно.
ВАЖНО! Перед тем как делать выводы о том, что «что-то тут не так», почистите кэш браузера и повторите попытку.
Другой способ – воспользоваться онлайн-сервисами по проверке кода ответа сервера. Например, http://4web.su/s_redirect/. Вводим имя домена и проверяем код ответа. Если редирект настроен правильно, то код ответа будет либо 301, либо 302 (в зависимости от того, какую именно переадресацию Вы настраивали). На некоторых сервисах (кстати, 4web.su – один из них) может отображаться еще и код, который сервер отдает уже после переадресации. Единственный допустимый код в этом случае – 200 ОК.
В данном случае мы попытались проверить как работает http-версия нашего сайта. Во-первых, мы получили сообщение о том, что у нас настроен 301 редирект (т.е. постоянный), новый адрес (https-версия сайта), а также отображены 2 кода ответа — 301 Moved Permanently и 200 ОК.
Если же вместо 200 ОК вылезает код 404 (как на приведенном ниже скриншоте) – значит редирект настроен неправильно.
Как сделать редирект без .htaccess
Большинство программистов настраивает редиректы путем прописывания ранее приведенных кодов в файле .htaccess. Основной минус такого подхода в том, что можно неплохо «накосячить», т.е. код в файл внесли, но он почему-то не срабатывает (или срабатывает, но неправильно). Причины могут быть самыми разными – возможен косяк в самой CMS, либо код на редирект должен располагаться выше/ниже, и т.д., вариантов масса. Поэтому существуют и альтернативные способы настройки редиректа. Например, PHP или JavaScript.
PHP редирект
Во-первых, PHP-это сервероориентированный язык.
Во-вторых, редирект будет происходить на сервере, а не в браузере пользователя.
В-третьих, каждой страничке, на которую будет производиться редирект, присваивается свой уникальный REFERER, а это значит, что скрыть страницу-источник не получится.
Важно понимать, что код редиректа необходимо вставлять таким образом, чтобы его чтение происходило еще до выведения на экран самого первого символа. Т.е. если перед <? поставить пробел, то редирект уже не сработает.
PHP-редиректы необходимо оформлять в отдельные php-файлы.
Код редиректа на примере файла index.php:
или
В зависимости от того, 301 редирект Вы хотите настроить, или 302. С помощью PHP обычно настраивается 302 редирект.
Простейший javascript-редирект
Основной минус данного способа в том, что не у всех (но у большинства) пользователей включен в браузере JavaaScript. Если JavaScript в браузере отключен – редиректа не произойдет.
Второй минус заключается в том, что возникает ощущение задержки. Это связано с тем, что сначала прогружается одна html-страница с белым экраном, и только после этого происходит переадресация.
Оформляется редирект в <body> либо в <head>:
ВАЖНО!!! Данный код в любом случае сработает быстрее, чем код Яндекс.Метрики, а это значит, что Яндекс до редиректа посетителя не засчитает.
Настроить 301 редирект в WordPress
Ранее мы уже говорили, что в WordPress удобнее всего настраивать редиректы с помощью плагинов. О них и поговорим.
Плагин Redirection. Это самый популярный плагин для настройки редиректов. Он почти никогда не жаловался на «извините, у меня с новой версией движка несовместимость», а если и жаловался – то разработчики в считаные часы вносили в плагин все необходимые для совместимости изменения. Число скачиваний уже перевалило за несколько миллионов.
Число переадресаций, которые через него можно настроить, не ограничено. Плюс бонусом можно отслеживать статистику по настроенным с помощью этого плагина редиректам и даже отслеживать ошибочные перенаправления (когда после переадресации отдается код не 200 ОК, а 404 Not Found).
Единственный минус этого плагина в том, что он англоязычный. Но разобраться с настройкой редиректов крайне просто: указываем адрес, откуда будет происходить переадресация, указываем адрес, куда надо переадресовать, выбираем из списка код ответа, добавляем комментарий (при необходимости) и сохраняем. Готово!
Если этот плагин чем-то не устраивает, можно рассмотреть альтернативный — Safe Redirect Manager (разработчик – компания 10up). Принципиально ничем не отличается.
Не грех упомянуть Simple 301 Redirects, но он необходим исключительно для настройки 301 редиректа.
Настройка редиректов в Joomla
Самое ужасное – получение битых ссылок «из ниоткуда». «Да как так-то? Еще вчера все отлично работало! Почему теперь страница не найдена?». Это связано с тем, при обновлении контента, добавлении товаров/продуктов, либо по каким-то иным причинам, адреса могут меняться. И что делать? Правильно – настройка 301 редиректа будет единственным правильным решением. Как и в WordPress, в Joomla данный вопрос решается путем работы с плагинами, т.е. без вмешательства в .htaccess.
И сразу же конкретный пример, когда такое может произойти. Интернет-магазины на Joomla – это не редкость. И вот в магазин поступил новый смартфон, какой-нибудь Gopo Center C4. Менеджеры создают под него карточку товара, затем заказывается реклама и делается рассылка, а затем директор магазина говорит менеджеру «А почему в заголовке не указали, что он в черном и белом цвете? Исправить!», менеджер вносит исправления, вследствие чего адрес ссылки меняется. Итог – вся реклама и рассылка превращается в пустой слив бюджета, т.к. прошлая ссылка уже не работает. И вот тут есть 2 выхода – откорректировать адрес ссылки вручную (на сайте интернет-магазина, но это отдельная тема для разговора), либо настроить 301 редирект со старого адреса на новый.
Теперь о том, как решить эту проблему через 301 редирект.
1. Необходимо убедиться, что редирект-плагин включен.
Для этого в админке выбираем Расширения => Менеджер плагинов.
Ищем в списке установленных плагинов «Система – Перенаправление» и включаем (если он выключен).
2. Проверяем «плохие» адреса.
В верхнем меню переходим в Компоненты => Перенаправление, там будет список всех “плохих” URL вашего Joomla-сайта.
3. Настраиваем переадресацию.
Выбираем URL, с которого нужно сделать переадресацию, затем в “URL назначения» вводим новый адрес (разумеется рабочий), при необходимости добавляем комментарий, убеждаемся, что установлен статус «Включено» и сохраняем изменения.
Т.е. для решения данной задачи хватает стандартного плагина Joomla, который идет с движком «с завода».
Настройка редиректа на OpenCart
Формирование адресов на OpenCart – это очень больная тема. А чтобы Вам было проще понять, насколько она на этом движке большая, просто взгляните на то, какой вид имеет адрес главной страницы:
site.com/index.php/?route=common/home
И это вместо site.com
Почему разработчики так эту проблему не решили – не понятно. Видимо, в этих «хвостах» зашифрованы послания тем, кто пытается через тайну Вселенной постичь тайну сокровищ Майя. Но т.к. среди простых землян таких нет (или есть?), то проблема перекладывается с разработчиков движка на программистов сайта.
Решить проблему можно несколькими способами:
Способ 1. В папке templates/common найти файлы header.tpl и footer.tpl и произвести в них замену кода с <?php echo $home; ?> на <?php echo $base; ?>
Способ 2. Настройка редиректа на site.com через .htaccess, вставив вот этот код:
Таким же (а именно – вторым) способом можно настроить редиректы со старых адресов категорий на новые. По умолчанию адреса ссылок в OpenCart выглядят примерно следующим образом:
site.com/index.php?path=83_94_113&route=product/category
На такие ссылки смотреть очень больно, причем в прямом смысле, т.к. глаза реально начинают болеть при виде таких адресов. В том же .htaccess можно настроить редирект на «человеческие» адреса вида site.com/category с помощью такого кода:
Но что делать с динамическими адресами, которые из-за привязки к определенной секции имеют вид site.com/katalog?c=okna-pvkh?
Программисты довольно долго искали решение. «Методом тыка» (точнее — проб и ошибок) решение было найдено. В данном случае происходит редирект на главную страницу сайта:
Примечания и ошибки
Теперь поговорим о том, как не допускать ошибок при настройке 301 редиректа:
- Нельзя нарушать последовательность правил переадресации. После настройки редиректа необходимо убедиться, что настройка не дала каких-либо «побочных эффектов». Если нарушить последовательность правил, то ранее настроенные редиректы могут либо прекратить функционировать, либо функционировать неправильно. Противоречий в правилах быть не должно.
- Не стесняйтесь пользоваться официальными мануалами, т.к. у 301 редиректа из-за непростого синтаксиса есть множество особенностей. Упустить какой-то нюанс при настройке – проще простого.
- После очередных «допиливаний» ВСЕГДА проводите полную проверку работоспособности тех правил, которые были внедрены ранее. Настройка без проверки – это не настройка даже «для галочки». Один лишний символ может «обвалить» работу всего сайта, либо заставить его работать неправильно. За другими программистами нам уже не раз приходилось исправлять работу сайта, когда с адреса site.com/oldpage происходит 301 редирект на site.com/newpage, а затем с помощью того же 301 редиректа происходит переадресация обратно на site.com/oldpage и далее «по кругу».
Ну и в заключение приведем несколько примеров, когда применять 301 переадресацию вообще нельзя.
Во-первых, «многоходовки», когда идет череда из нескольких 301 редиректов подряд. Гораздо правильнее настроить редирект сразу на «финишный» адрес.
Во-вторых, если по каким-то причинам есть 2 страницы с дублирующим контентом, но нужно сохранить для пользователей обе.
В-третьих, редиректы «не туда». Т.е. если страница переехала с первого адреса на второй, а при настройке редиректа Вы ошибочно указываете адрес совершенно другой страницы.
В-четвертых, redirect на страницу, которая работает по каким-то причинам очень некорректно. Страница должна работать стабильно и отдавать либо код 200, либо код 404.
В-пятых, редирект файла robots.txt. Это запрещено правилами многих поисковых систем. Более того, многие допускают одну и ту же ошибку – когда настраивают htaccess редирект на https с http://site.xyz/robots.txt на https://site.xyz/robots.txt. Файл robots.txt должен быть доступен по обоим адресам без всяких переадресаций. Ровно то же самое касается и xml-карты сайта.
stokrat.org
Добрый день. Не могу найти 301 редирект со страниц без слеша на слеш, ваши варианты тоже не подошли, можете помочь? Ниже предоставляю свой файл .htaccess
AddDefaultCharset UTF-8
DirectoryIndex index.php
Options All -Indexes
Header set Cache-Control “max-age=43200”
Header set Cache-Control “max-age=604800”
Header set Cache-Control “max-age=2592000”
Header unset Cache-Control
ExpiresActive On
ExpiresDefault “access plus 5 seconds”
ExpiresByType image/x-icon “access plus 2592000 seconds”
ExpiresByType image/jpeg “access plus 2592000 seconds”
ExpiresByType image/png “access plus 2592000 seconds”
ExpiresByType image/gif “access plus 2592000 seconds”
ExpiresByType application/x-shockwave-flash “access plus 2592000 seconds”
ExpiresByType text/css “access plus 604800 seconds”
ExpiresByType text/javascript “access plus 604800 seconds”
ExpiresByType application/javascript “access plus 604800 seconds”
ExpiresByType application/x-javascript “access plus 604800 seconds”
ExpiresByType text/html “access plus 43200 seconds”
ExpiresByType application/xhtml+xml “access plus 600 seconds”
php_value post_max_size 80M
php_value upload_max_filesize 50M
ErrorDocument 404 http://mir-gardin.com.ua/404.php
RewriteEngine on
RewriteCond %{HTTP_HOST} ^mir-gardin.com.ua$ [NC]
RewriteBase /
RewriteRule ^.htaccess$ – [F]
RewriteRule ^admin/$ /admin/index.php [L]
RewriteRule ^admin/promotion$ /admin/promotion.php [L]
RewriteRule ^admin/promotion/$ /admin/promotion.php [L]
RewriteRule ^admin/services$ /admin/services.php [L]
RewriteRule ^admin/services/$ /admin/services.php [L]
RewriteRule ^admin/main$ /admin/main.php [L]
RewriteRule ^admin/main/$ /admin/main.php [L]
RewriteRule ^admin/catalog$ /admin/catalog.php [L]
RewriteRule ^admin/catalog/$ /admin/catalog.php [L]
RewriteRule ^admin/contacts$ /admin/contacts.php [L]
RewriteRule ^admin/contacts/$ /admin/contacts.php [L]
RewriteRule ^admin/news$ /admin/news.php [L]
RewriteRule ^admin/news/$ /admin/news.php [L]
RewriteRule ^admin/about_us$ /admin/about_us.php [L]
RewriteRule ^admin/about_us/$ /admin/about_us.php [L]
RewriteRule ^admin/pay$ /admin/pay.php [L]
RewriteRule ^admin/pay/$ /admin/pay.php [L]
RewriteRule ^admin/reviews$ /admin/reviews.php [L]
RewriteRule ^admin/reviews/$ /admin/reviews.php [L]
RewriteRule ^admin/our_works$ /admin/faq.php [L]
RewriteRule ^admin/our_works/$ /admin/faq.php [L]
RewriteRule ^admin/producers$ /admin/producers.php [L]
RewriteRule ^admin/producers/$ /admin/producers.php [L]
RewriteRule ^admin/fotogallery$ /admin/fotogallery.php [L]
RewriteRule ^admin/fotogallery/$ /admin/fotogallery.php [L]
RewriteRule ^admin/header$ /admin/header.php [L]
RewriteRule ^admin/header/$ /admin/header.php [L]
RewriteRule ^admin/menu$ /admin/menu.php [L]
RewriteRule ^admin/menu/$ /admin/menu.php [L]
RewriteRule ^admin/options_lr$ /admin/options_lr.php [L]
RewriteRule ^admin/options_lr/$ /admin/options_lr.php [L]
RewriteRule ^admin/modules$ /admin/modules.php [L]
RewriteRule ^admin/modules/$ /admin/modules.php [L]
RewriteRule ^admin/footer$ /admin/footer.php [L]
RewriteRule ^admin/footer/$ /admin/footer.php [L]
RewriteRule ^admin/per_page$ /admin/per_page.php [L]
RewriteRule ^admin/per_page/$ /admin/per_page.php [L]
RewriteRule ^admin/rights$ /admin/rights.php [L]
RewriteRule ^admin/rights$ /admin/rights.php [L]
RewriteRule ^admin/user_data$ /admin/user_data.php [L]
RewriteRule ^admin/user_data/$ /admin/user_data.php [L]
RewriteRule ^admin/user_files$ /admin/user_files.php [L]
RewriteRule ^admin/user_files/$ /admin/user_files.php [L]
RewriteRule ^admin/meta$ /admin/meta.php [L]
RewriteRule ^admin/meta/$ /admin/meta.php [L]
RewriteRule ^admin/fav$ /admin/fav.php [L]
RewriteRule ^admin/fav/$ /admin/fav.php [L]
RewriteRule ^admin/files$ /admin/files.php [L]
RewriteRule ^admin/files/$ /admin/files.php [L]
RewriteRule ^admin/articles$ /admin/articles.php [L]
RewriteRule ^admin/articles/$ /admin/articles.php [L]
RewriteRule ^$ /index.php [L]
#RewriteRule ^404$ /404.php [L]
RewriteRule ^registration$ /registration.php [L]
RewriteRule ^registration/$ /registration.php [L]
RewriteRule ^userpanel$ /userpanel.php [L]
RewriteRule ^userpanel/$ /userpanel.php [L]
RewriteRule ^forgot_password$ /forgot_password.php [L]
RewriteRule ^forgot_password/$ /forgot_password.php [L]
RewriteRule ^feedback$ /feedback.php [L]
RewriteRule ^feedback/$ /feedback.php [L]
RewriteRule ^about_us$ /about.php [L]
RewriteRule ^about_us/$ /about.php [L]
RewriteRule ^articles$ /articles.php?page=1 [L]
RewriteRule ^articles/$ /articles.php?page=1 [L]
RewriteRule ^articles/page$ /articles.php?page=1 [L]
RewriteRule ^articles/page/$ /articles.php?page=1 [L]
RewriteRule ^articles/page/([0-9]+)/? /articles.php?page=$1 [L]
RewriteRule ^articles/topic/(.*)/? /view_article.php?id=$1 [L]
RewriteRule ^cart$ /cart.php [L]
RewriteRule ^cart/$ /cart.php [L]
RewriteRule ^catalog$ /catalog.php?page=1 [L]
RewriteRule ^catalog/$ /catalog.php?page=1 [L]
RewriteRule ^catalog/page$ /catalog.php?page=1 [L]
RewriteRule ^catalog/page/$ /catalog.php?page=1 [L]
RewriteRule ^catalog/page/([0-9]+)/? /catalog.php?page=$1 [L]
RewriteRule ^catalog/category/(.*)/page/([0-9]+)/? /catalog_by_cats.php?cat=$1&page=$2 [L]
RewriteRule ^catalog/category/(.*)? /catalog_by_cats.php?cat=$1&page=1 [L]
RewriteRule ^catalog/subcategory/(.*)/page/([0-9]+)/? /catalog_by_subcats.php?cat=$1&page=$2 [L]
RewriteRule ^catalog/subcategory/(.*)? /catalog_by_subcats.php?cat=$1&page=1 [L]
RewriteRule ^catalog/view/(.*)/? /view_item.php?id=$1 [L]
RewriteRule ^catalog/view_all/(.*)/view/(.*)/? /view_all.php?type=$1&cat=$2 [L]
RewriteRule ^catalog/view_all/(.*)? /view_all.php?type=all&cat=0 [L]
RewriteRule ^contacts$ /contacts.php [L]
RewriteRule ^contacts/$ /contacts.php [L]
RewriteRule ^our_works$ /faq.php [L]
RewriteRule ^our_works/$ /faq.php [L]
RewriteRule ^news$ /news.php?page=1 [L]
RewriteRule ^news/$ /news.php?page=1 [L]
RewriteRule ^news/page$ /news.php?page=1 [L]
RewriteRule ^news/page/$ /news.php?page=1 [L]
RewriteRule ^news/page/([0-9]+)/? /news.php?page=$1 [L]
RewriteRule ^news/topic/(.*)/? /view_news.php?id=$1 [L]
RewriteRule ^pay$ /pay.php [L]
RewriteRule ^pay/$ /pay.php [L]
RewriteRule ^producers/(.*)/page/([0-9]+)/? /producers.php?id=$1&page=$2 [L]
RewriteRule ^producers/(.*)? /producers.php?id=$1&page=1 [L]
RewriteRule ^producers$ /producers.php [L]
RewriteRule ^producers/$ /producers.php [L]
RewriteRule ^reviews$ /reviews.php [L]
RewriteRule ^reviews/$ /reviews.php [L]
RewriteRule ^search/(.*)/? /search.php?word=$1 [L]
RewriteRule ^services$ /services.php [L]
RewriteRule ^services/$ /services.php [L]
RewriteRule ^thanks$ /thanks.php [L]
RewriteRule ^thanks/$ /thanks.php [L]
RewriteCond %{HTTP_HOST} ^www.mir-gardin.com.ua$ [NC]
RewriteRule ^(.*)$ http://mir-gardin.com.ua/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/
RewriteRule ^index.php$ http://mir-gardin.com.ua/ [R=301,L]
web-optimizator.com
Памятка по используемым символам и обозначениям
Строчка RewriteCond — условие выполнения правила RewriteRule. Если условие выполняется, то срабатывает редирект. Правила могут задаваться с помощью регулярных выражений.
Спецсимволы, используемые в правилах и их значения.
- ^ — спецсимвол начала строки;
- $ — спецсимвол конца строки;
- ! — спецсимвол отрицания;
- . — точка, заменяет любой символ, но только один;
- () — группировка;
- — «экранирующий» слеш, следующий символ после него считается обычным, а не спецсимволом;
- # — начало текстового комментария в файле.
Модификаторы используются после обычных, спецсимволов или их групп и позволяют расширить возможности шаблонов для срабатывания правил.
- ? — символ повторяется 0 или 1 раз.
- + — повторяется от 1 до 65536 раз.
- * — повторяется от 0 до 65536 раз.
Флаги, задают доп. опции для используемого правила. Перечисляются в квадратных скобках через запятую, скажем [NC] или [R=301,L].
- NC — флаг NoCase, отключающий проверку регистра символов при срабатывании правила.
- R — флаг Redirect, производит процесс остановки изменения URL-адреса и возвращает результат. Чаще всего используется значение R=301, но возможны и другие для временных перенаправлений (302, MOVED TEMPORARY).
- L — флаг Last, останавливает формирования URL-адреса и строка считается окончательной.
pixelplus.ru
Полезные советы
- Современные браузеры по умолчанию используют кеширование для редиректов. Чтобы проверить работу редиректа необходимо очистить кеш в браузере или использовать любой сторонний сервис по проверке кода ответа сервера.
- Нежелательно создавать цепочки редиректов. При медленной работе сервера это вызовет недовольство пользователя. Поисковые роботы также не любят последовательные редиректы — вес исходной страницы может не передаться.
- При составлении файла .htaccess простые директивы должны идти раньше сложных, которые распространяются на весь сайт. Такая компоновка будет более удобной при работе с файлом и поможет избежать путаницы.
Наиболее популярные правила
Приведенные примеры работают для серверов функционирующих на APACHE, для NGINX настройки в файле .htaccess работать не будут. В примерах используется %{QUERY} — так обозначается часть URL, которая следует после знака вопроса. Правила для редиректа срабатывают только при условии соответствия правилу указанному в редиректе.
При настройке правила редиректов в файле .htaccess все правила необходимо указывать после указанных двух строк, либо просто добавьте их:
Options +FollowSymLinks
RewriteEngine On
301 редирект все страниц без WWW на страницы с WWW
RewriteCond %{HTTP_HOST} ^mysite.ru$ [NC]
RewriteRule ^(.*)$ http://www.mysite.ru/$1 [R=301,L]
Обратный редирект со страниц с WWW на страницы без WWW
RewriteCond %{HTTP_HOST} ^www.mysite.ru$ [NC]
RewriteRule ^(.*)$ http://mysite.ru/$1 [R=301,L]
301 редирект с одной страницы на другую
Redirect 301 /oldpage.html http://mysite.ru/newpage.html
Переадресация для разделов через RewriteRule
RewriteRule ^papka /papka-new/$1 [R=301,L]
301 редирект для страниц имеющих Get-параметры в URL
Для наглядности примера допустим адрес страницы имеет вид http://mysite.ru/catalog/index.php?IBLOCK_ID=5&SECTION_ID=15. Следующее правило будет делать переадресацию:
RewriteCond %{QUERY} ^IBLOCK_ID=5&SECTION_ID=15$ [NC]
RewriteRule ^catalog/index.php$ /newcatalog/? [R=301,L]
Иногда необходимо настроить редирект для изменяющихся Get-параметров, например в текущем примере динамическим параметром будет SECTION_ID:
RewriteCond %{QUERY} ^IBLOCK_ID=5&SECTION_ID=(.*)$ [NC]
RewriteRule ^catalog/index.php$ /newcatalog/? [R=301,L]
Переадресация со страниц без значения Get-параметра
Например адрес страницы имеет вид — http://mysite.ru/?addon, тогда редирект будет следующим:
RewriteCond %{QUERY} ^addon$ [NC]
RewriteRule ^$ /? [R=301,L]
Переадресация одного адреса, без вложенных адресов
Например довольно часто необходимо настроить переадресацию со страницы раздела http:/site.ru/razdel/, однако прочие страницы в данном разделе должны работать без редиректа, например страница http://mysite.ru/razdel/section.php?SECTION_ID=1. Для этого нужно добавить всего один символ — $.
RewriteRule ^razdel/$ http://mysite.ru/new-razdel/ [R=301,L]
Настройка кириллических доменов .РФ
Правила и логика работы с доменами на кириллице абсолютно такие же, единственным отличием является замена символов кириллицы на специальный код.
301 редирект с одного домена на другой
RewriteCond %{HTTP_HOST} ^oldmysite.ru$ [NC]
RewriteRule ^(.*)$ http://newmysite.ru/$1 [R=301,L]
Правило для доменов .РФ
RewriteCond %{HTTP_HOST} ^xn-....xn--p1ai$ [NC] RewriteRule ^(.*)$ http://mysite.ru/$1 [R=301,L]
Редирект на папки со слешем на конце
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !..{1,10}$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://mysite.ru/$1/ [L,R=301]
Редирект на папку без слеша — убираем слеш на конце
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ http://www.site.ru/$1 [R=301,L]
Переадресация с домена в папку другого сайта
RewriteCond %{HTTP_HOST} ^oldsite.ru$ [NC]
RewriteRule ^(.*)$ http://newsite.ru/oldsite/ [R=301,L]
Редирект со всех страниц кроме определенной папки
Для примера возьмем в исключение папку панели администратора в CMS Bitrix
RewriteRule ^bitrix/ /bitrix/admin/ [L,R=301]
RewriteRule ^(.*)$ http://mysite.ru/ [L,R=301]
Переадресация всех файлов папки на конкретный файл
RewriteRule ^papka(.*)$ /my-file.html [L,R=301]
Переадресация файлов папки на другой файл с исключением
RewriteRule ^papka/file.html /new-file.html [L,R=301]
RewriteRule ^papka(.*)$ /my-file.html [L,R=301]
Редирект замены расширений файлов — с html на php
RedirectMatch 301 (.*).html$ http://newsite.ru$1.php
Указываем порядок загрузки индексных файлов в корне
DirectoryIndex index.php index.html index.htm index.shtml
Редирект с index.php на корень сайта
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/ RewriteRule ^index.php$ http://mysite.ru/ [R=301,L]
Редирект всех индексных страниц на корень
RewriteRule ^(.*)index.php$ http://mysite.ru/$1 [R=301,L]
Переадресация с поддомена на основной домен
RewriteCond %{HTTP_HOST} ^abc.mysite.ru$ [NC]
RewriteRule ^(.*)$ http://mysite.ru%{REQUEST_URI} [R=301,NC,L,QSA]
Редирект страницы из различных директорий
Если в разных папках сайта лежит файл с одинаковым названием, то настроить переадресацию этих файлов на один.
RewriteRule [^abc]/nash-file.php /nash-file.php [R=301,L]
Создаем ЧПУ-копию динамических страниц
Для страницы появится обычный URL без передачи Get-параметров.
RewriteRule ^catalog/okno/?$ /firma/okna/detail.php?ID=123 [NC,L]
Переадресация с https на http
Необходимое правило для решения проблемы с дублями страниц в поисковых системах.
RewriteCond %{HTTPS} "on" RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]
Настройка ответа 403 для спама по REFERER
Данное правило позволяет не пускать на сайт спамный трафик с других сайтов:
RewriteCond %{HTTP_REFERER} ref-spam-site.ru [NC,OR]
RewriteCond %{HTTP_REFERER} another-ref-spam.ru [NC]
RewriteRule .* - [F]
Обработка ошибки 404 в .htaccess
Для поисковых систем очень важно получать код ответа 404 для несуществующих страниц
ErrorDocument 404 /404-for-me.php
Особенности настройки
Следует помнить, что все правила выполняются в .htaccess в порядке следования их в файле, поэтому необходимо следить за очередностью правил.
Избегайте цепочек редиректов, когда от старой до новой страницы осуществляется посещение еще одной страницы. Цепочки переадресаций негативно влияют на доверие пользователей и поисковых систем.
Включение редиректа для определенных User Agent
Например редирект на мобильную версию для планшетов и смартфонов:
RewriteCond %{HTTP_USER_AGENT} (iPad|ipad|iphone|iPhone|ipod|iPod|android|midp|j2me|symbian|series 60|symbos|windows mobile|windows ce|ppc|smartphone|blackberry|mtk|bada|windows phone) [NC]
RewriteRule (.*) http://m.mysite.ru/ [L,R=301]
Настройка редиректов для всех поисковых роботов
RewriteCond %{HTTP_USER_AGENT} !(accoona|ia_archiver|antabot|ask jeeves|baidu|dcpbot |eltaindexer|feedfetcher|gamespy|gigabot|googlebot |gsa-crawler|grub-client|gulper|slurp|mihalism|msnbot|worldindexer |ooyyo|pagebull|scooter|w3c_validator|jigsaw|webalta|yahoofeedseeker |yahoo! slurp|mmcrawler|yandexbot|yandeximages |yandexvideo|yandexmedia|yandexblogs|yandexaddurl|yandexfavicons |yandexdirect|yandexmetrika|yandexcatalog|yandexnews |yandeximageresizer) [NC]
RewriteRule (.*) http://no-rank-site.ru/ [L,R=301]
Синтаксис и символы
- . — Точка означает любой символ.
- [abc] — перечень символов, совпадающих с буквами a, b, или с.
- [^abc] — перечень символов, не входящих в диапазон. Условию соответствует любой символ, кроме a, b, с.
- * — предыдущий символ может повторяться 0 и более раз.
- [abc]* — найти символы из заданного набора идущие подряд.
- [^abc]* — обратная операция.
- .* — замена любого набора символов. «.*» — найти все подстроки между кавычками.
- ^ — обознает начало строки (при использовании в начале выражения).
- $ — конец строки.
- w — буква, цифра или подчёркивание _.
- d — любая цифра.
- D — любой символ, кроме цифр.
- [0-9] — указание на любую цифру.
- [a-z] — указание на любую букву от a до z с нижним регистром.
- [A-Z] — указание на любую букву от A до Z с верхним регистром.
- [a-zA-Z] — любая буква от a до Z, регистр не важен.
- [a-Z] — тоже самое, только короче.
Флаги для доп. опций
- NC — NoCase отключает проверку регистра символов при срабатывании правила.
- R — Redirect останавливает изменение URL-адреса и возвращает результат. Самое популярное значение R=301, однако встречаются и другие для временных редиректов (302, MOVED TEMPORARY).
- L — Last останавливает создание URL-адреса и строка считается окончательной.
canwas.ru
Зачем нужен 301 редирект?
К примеру, у нас была страница про менеджер паролей Keepass с таким адресом — /post/12509/ и мы решили сделать ЧПУ. То есть, теперь адрес страницы должен быть такой — /keepass-manаger/, этот адрес неизвестен поисковым системам, соответственно все, кто приходит из поиска будут попадать на старый адрес а не на новый. Но страницы со старым адресом уже не существует, значит посетители будут попадать на 404 страницу. То есть, у нас на сайте появится битая ссылка. И чтобы такого не происходило, нужно правильно сделать 301 редирект. Тогда пользователи из поиска будут перенаправляться со старого адреса на новый.
Как же сделать 301 редирект?
Итак, начнем с того, что вы должны познакомиться с файлом .htaccess. Именно в этот файл мы будем прописывать редиректы. Этот файл должен находиться в корневой директории вашего сайта, там же где находится файл index.php. Если у вас нет этого файла, значит вам нужно его создать вручную. обратите внимание на точку в имени файла — .htaccess. Имя должно быть точно таким же, включая точку.
После того как вы создали файл, можно делать 301 редирект, достаточно просто прописать следующую конструкцию.
RedirectPermanent 301 old_url new_url
- RedirectPermanent 301 — инструкции редиректа
- где old_url — старый адрес страницы
- new_url — новый адрес страницы
Рассмотрим пример редиректа на моем сайте по программированию. У нас есть следующая целевая страница — http://cppstudio.com/dlya-nachinayushhix/rekomendovannaya-literatura/ — это старый адрес, с этого адреса нужно сделать переадресацию на новый адрес — /cat/299/. Новый адрес хотя и не похож на ЧПУ, но, зато, он более короткий и легко запоминается. Я открываю файл .htaccess и в конец добавляю следующую строку:
RedirectPermanent 301 /dlya-nachinayushhix/rekomendovannaya-literatura/ /cat/299/
Как видите, я указал ключевое слово RedirectPermanent, указал номер статуса, потом указал старый адрес и, через пробел, — новый. Чтобы проверить, работает редирект или — нет, пройдите по следующим адресам:
- http://cppstudio.com/dlya-nachinayushhix/rekomendovannaya-literatura/ — старый адрес страницы
- http://cppstudio.com/cat/299/ — новый адрес страницы
Эти два адреса ведут на одну и туже страницу и адрес у этой страницы — /cat/299/. Со старого адреса выполняется 301 редирект на новый адрес. Теперь вы имеете наглядное представление того, как работает 301 редирект.
Также, обратите внимание на то, что в строке редиректа я указал относительные адреса, то есть можно было бы написать так:
RedirectPermanent 301 http://cppstudio.com/dlya-nachinayushhix/rekomendovannaya-literatura/ http://cppstudio.com/cat/299/
В этом случае 301 редирект то же бы хорошо работал, но если вы делаете редирект в пределах своего доменного имени, то его можно опускать, так запись короче получается.
Другие директивы редиректа 301
Для 301 редиректа, также можно использовать директиву Redirect, она абсолютно аналогична директиве RedirectPermanent. Отличие состоит в том, что RedirectPermanent была разработана позже, в отличие от директивы Redirect. Директива RedirectMatch используется для настройки переадресации с помощью регулярных выражений.
Также, важным моментом является то, что при 301 редиректе, весь вес страницы перетекает со старого на новый адрес. Поэтому не стоит беспокоиться о том, что статический вес со старой страницы куда-то исчезнет.
PHP 301 редирект
<?php header("HTTP/1.1 301 Moved Permanently"); // отправляем заголовок состояния (в нашем случае - это редирект 301) header("Location: /post/12803/"); // редирект на другую страницу блога exit(); ?>
Как видите из примера, 301 редирект в php выполняется достаточно легко, просто скопируйте этот кусок кода и укажите свой адрес страницы. А теперь давайте протестируем php-редирект:
Тестируем php-редирект
Обратите внимание на адрес ссылки, вот он /wp-content/scripts/php_redirect.php. По этому адресу мы обращаемся к php-скрипту, в котором прописан редирект на страницу с фидбернером.
На этом я решил закончить данный пост, думаю, новичкам будет достаточно информации по 301 редиректу. Во всяком случае, для своего проекты вы уже сможете сделать 301 редирект самостоятельно.
seofine.ru
Что такое 301 редирект
301 редирект (301 Permanent Redirect) — ответ сервера, а также серверное перенаправление с одного url-адреса на другой. Благодаря такому перенаправлению можно автоматически отправлять пользователя или поисковую систему со старого адреса страницы на новый. Этот ответ сервера указывает поисковым системам, что страница была перемещена на другой адрес, поэтому старый url можно считать устаревшим. После того, как пройдет переиндексация, поисковые системы «склеят» их и будут предлагать пользователям новый.
Где настраивается 301 редирект
Существует несколько наиболее часто используемых способов настройки 301 редиректов:
— через php условие
Когда браузер получает команду вместо одной страницы открыть вторую. Если Ваш сайт сделан на какой-то CMS, то есть вероятность того, что у неё есть функция редиректа с корня на файл index. В этом случае откройте index.php, который находится в корне Вашего движка и пропишите:
где первая строка указывает какой url-адрес должен перенаправлять, а вторая — на какой url-адрес должно выполняться перенаправление.
— в конфигурационном файле, например в .htaccess
в таком случае редирект будет работать на уровне сервера и восприниматься как серверная команда. В этой статье мы поговорим о настройке редиректа в файле .htaccess, а также, в каких случаях и с помощью каких комбинаций строк кода настраиваются те или иные редиректы.
В каких случаях нужно использовать 301 редирект
301 редирект с www на без www (настройка главного зеркала)
Самый распространенный случай, когда необходимо настроить редирект, это когда сайт доступен по нескольким адресам одновременно. Например: http://site.com и http://www.site.com. Это может мешать продвижению ресурса, так как в индексе поисковых систем могут появляться полные дубли страниц. Поэтому в файл .htaccess можно попробовать добавить такие строки:
или вот такой вариант
301 редирект с без www на www
или вот такой вариант
301 со старого адреса страницы сайта на новый
Когда вам нужно удалить страницу, но на нее ведет много качественных ссылок, чтобы сохранить эти ссылки и передать ее Page Rank другой странице, можно настроить редирект с этой страницы на максимально релевантную по смыслу другую. В таком случае вам могут помочь дополнительные строки кода в файле .htaccess такого вида:
где test и new-test – ваш варианты страниц
301 редирект со всех страниц одного домена на главную другого домена
Когда вам нужно переехать на абсолютно другой адрес сайта или вы купили хороший старенький домен и хотите его средиркетить, вам могут помочь вот эти дополнительные строчки кода в файле .htaccess того сайта, с которого будет работать перенаправление:
где site.ru – сайт, на который будет идти редирект
301 редирект с каждой страницы одного домена на такой же адрес другого
где site.ru – сайт, на который будет идти редирект
Редирект с http на https
Если вы решились переехать на защищенный протокол https, необходимо настроить редирект с помощью этих строк:
или можно попробовать такой вариант
301 редирект со страниц со слешем на без слеша (для всего сайта)
или вот такой вариант
301 редирект со страниц без слеша на слеш (для всего сайта)
или вот такой вариант
301 редирект только адреса site.ru/index.php (без GET параметров) на основное зеркало site.ru
или вот такой вариант
301 редирект всех адресов с index.php и GET параметрами на страницы только с GET параметрами (вырезать в url index.php)
301 редирект для index.php, index.html или index.htm (например в Joomla), массовая склейка
Редирект с внутренней страницы на главную
Редирект с главной на внутреннюю страницу
Редирект всех внутренних страниц на главную
Редирект с домена РФ на домен RU
301 редирект каталога
Эти решения чаще всего подходят для основных задач, но иногда их необходимо дорабатывать совместно с разработчиками. Связано это с особенностями отдельных cms-систем.
Важная рекомендация: на многих хостингах по умолчанию может работать 302 или другой 3ХХ редирект. Поэтому рекомендуется всегда дописывать в свои правила [R=301,L].
Смена cms-системы и массовое изменение всех адресов страниц сайта
Бывают случаи, когда вы переезжаете на другую cms и адреса ваших страниц меняются следующим образом:
Было — site.com/category/kategoriya
Стало — site.com/kategoriya
В таком случае вам необходима массовая настройка редиректов по общему принципу и возможно вам помогут следующие строки в .htaccess:
Следует понимать, что в каждом конкретном случае и разными сайтами эти правила могут быть не до конца актуальными, поэтому перед тем как изменять содержимое файла .htaccess, предварительно рекомендуется сделать его копию на всякий случай.
Если они вам все таки не подошли, следует обратиться к разработчиками, которые знают особенности вашего движка и смогут доработать предлагаемые выше варианты.
Почему 301 редирект, а не 302 и другой 30х — опыт из нашей практики
С точки зрения SEO, следует всегда использовать 301 редирект, в случае, если вы хотите перенаправлять и пользователей и поисковых роботов на новый адрес.
302 редирект — временное перенаправление только пользователей на другой адрес. Поисковые системы в таком случае не понимают что страница переехала, поэтому в поисковой выдаче может быть как старая, так и новая. То есть, этот ответ сервера не указывает поисковым системам, что страница была перемещена на другой адрес. Он говорит, что старая страница временно находится на реконструкции и ее следуют сохранить в индексе.
Эту разницу чаще всего разработчики не понимают, поэтому после редизайна сайта или переезда на новый адрес следует всегда проверять ответ сервера и рекомендуется оформлять его как 301.
Вот случай когда сайт переехал с домена kiev.ua на ua, а чуть позже еще и на защищенный протокол https, но разработчики настроили не 301, а 302 редирект. Результат:
Пока работал такой редирект и поисковые системы считали его временным, в индексе Google и Яндекс находилось 3 копии одного и того же сайта. Что впоследствии привело к очень сильному проседанию позиций в поиске.
Как только 302 редирект был изменен на 301, поисковые системы произвели склейку, исключили дубли из индекса и позиции очень быстро вернулись на прежние места в поиске.
Важно знать и помнить — если вы хотите, чтобы поисковые системы считали два разных адреса как один — должна работать переадресация на основной, с помощью 301 редиректа. В противном случае в индексе остается страница со старым адресом и появляется страница с новым, как в приведенном выше примере. Использование 302 или любых 30х редиректов, как правило, с точки зрения SEO не приводит ни к чему хорошему. Проверить ответ сервера можно на этом сайте — bertal.ru.
q-seo.com.ua
Редирект 301 (301 Permanent Redirect) используется в нескольких случаях: при смене домена, при переносе страницы сайта, для склейки имени сайта с www и без него. Это важно для передачи Page Rank (PR) и сохранения поискового трафика.
Сам я столкнулся с его необходимостью, когда после переезда своего портала из зоны com, в ru обнаружил, что Google, Яндекс и другие поисковые системы, естественно не «забывают» старого сайта (отчасти еще и из-за того, что у меня была некорректно установлена своя страница, для обработки 404 ошибки, которая возвращала код ответа 200 OK). Более того, Google за полгода оставил для нового сайта PR=0, хотя для старого он сохранился PR=4.
Тема 301 редиректа постоянно обсуждается в различных SEO-форумах, да и каждая поисковая система в своей системе помощи имеет специальные разделы. Пока разбирался я нашел перечисленные ниже варианты организации редиректа, часть из которых опробовал у себя.
301 редирект это наилучший метод сохранения ваших позиций в поисковых системах, когда вы переносите страницу или сайт. Код «301» интерпретируется как постоянное перемещение («moved permanently»).
-
Простой редирект (в файле .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/
Примечание: для моих целей (изменение домена) хватило первого варианта простого 301 редиректа.
-
Использование 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]
-
Редирект на PHP:
<?php header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.newdomain.ru/newdir/newpage.htm"); exit(); ?>
Лучше указать HTTP/1.1, так как более старые не поддерживают виртуальный хостинг. Не забудьте, что до вызова header, ничего не должно выводиться (например, echo или print). Поэтому этот код лучше ставить в начало php-скрипта. Более полный вариант php редиректа с сохранением передаваемой страницы и параметров вызова:
<? $ref=$_SERVER['QUERY_STRING']; if ($ref!='') $ref='?'.$ref; header('HTTP/1.1 301 Moved Permanently'); header('Location: http://newdomain.com/'.$ref); exit(); ?>
-
Редирект на ASP
<%@ Language=VBScript %> <% Response.Status="301 Moved Permanently" Response.AddHeader "Location", "http://www.new-url.com" response.end %>
-
Редирект на ASP.NET
<script runat="server"> private void Page_Load(object sender, System.EventArgs e) { Response.Status = "301 Moved Permanently"; Response.AddHeader("Location","http://www.new-url.com"); } </script>
-
Редирект на ColdFusion
<.cfheader statuscode="301" statustext="Moved permanently"> <.cfheader name="Location" value="http://www.new-url.com">
-
Редирект с помощью meta refresh
<meta http-equiv='refresh' content='0; url=http://newdomain.com'>
где 0 — задержка переадресации в секундах, newdomain.com -страница, куда переадресуем. Некоторые старые браузеры не поддерживают meta refresh со значением 0, для совместимости можно установить ненулевой значение, хотя, на мой взгляд это уже не актуально. Такой редирект не сможет склеить ваши сайты (с www и без) и передать PR, так как игнорируется поисковыми системами. Он возвращает код 200 OK, что соответствует обычной странице. Эта техника популярна у спамеров, поэтому ее стоит применять только для страниц, которые не будут индексироваться.
-
www.rublin.org