Как сделать редирект: обзор способов
В этой статье вы найдете подробную информацию о редиректах. Познакомитесь с видами перенаправлений и узнаете, какие задачи они решают. Узнаете, как сделать редирект разными способами и какой метод перенаправления предпочтителен в конкретных случаях.
Что такое редиректы и зачем они нужны
Редирект — перенаправление пользователя с одного URL на другой. Например, при переходе по ссылке http://texterra.ru/blog/ браузер автоматически перенаправляет пользователя на URL https://texterra.ru/blog/.
Редиректы помогают корректно перенаправлять посетителей на нужные страницы сайта без ущерба для пользовательского опыта и без нарушения требований поисковых систем. Правильно выполненный редирект сохраняет авторитет или ссылочный вес страницы-донора и передает его на страницу-акцептор.
В данном случае донор – страница, с которой перенаправляются пользователи. Акцептор – страница, на которую направляются пользователи.
Вот примеры использования редиректов:
- Перенаправление с http на https. Пример указан выше.
- Перенаправление с URL с www на URL без www и наоборот. При переходе по ссылке https://tinkoff.ru браузер перенаправляет пользователя на https://www.tinkoff.ru. При переходе по ссылке https://www.vc.ru браузер перенаправляет посетителя на https://vc.ru/.
- Переезд сайта на другой домен. Пару лет назад коллеги из популярного издания отказались от названия «Цукерберг позвонит» и настроили редирект с адреса http://siliconrus.com на https://vc.ru/.
- Перенаправление трафика с одной страницы сайта на другую. Например, если в интернет-магазине нет какого-то товара, он может перенаправить трафик на страницу похожего продукта.
- Перенаправление пользователей на мобильную версию сайта. Если владелец ресурса использует для адаптации к мобильному трафику только мобильную версию сайта, он настраивает редирект мобильных пользователей с www.example.au на www.m.example.au.
С помощью редиректов владелец сайта направляет пользователей с неактуальных страниц на актуальные. Перенаправления классифицируются по функциональному назначению и по способу реализации.
Какие бывают виды редиректов и когда их используют
Для пользователя все редиректы одинаковы: при попытке перейти по одному URL они попадают на другой URL. Обычно интернет-серферы даже не замечают, что браузер перенаправил их с одного адреса на другой.
Браузеры и роботы поисковых систем определяют вид редиректа по коду состояния HTTP. Перенаправления могут иметь разный HTTP-статус: 301, 302, 303, 307. Рассмотрим каждый подробнее.
Редирект 301
Это самый распространенный вид перенаправления. HTTP-статус 301 значит, что ресурс навсегда перемещен с запрошенного URL на новый. После получения ответа 301 браузер делает новый запрос и перенаправляет пользователя на актуальную страницу.
Если вы используете редирект 301, авторитет и ссылочный профиль старой страницы передаются на новую. Например, не бойтесь потерять вес входящих ссылок при переводе сайта на безопасный протокол соединения. Корректный редирект 301 с http на https сохраняет эту характеристику ресурса и его конкретных страниц.
Редирект 302
В HTTP 1.0 статус 302 использовался для обозначения временного перемещения запрошенного ресурса на новый адрес. В HTTP 1.1 редирект 302 обозначает статус «Найдено» или Found. То есть ресурс существует, но владелец на некоторое время переместил его на новый адрес. Редирект 302 не передает авторитет и ссылочный профиль донора акцептору.
В HTTP 1.1 для временного перенаправления предложены редиректы 303 и 307. Это связано с некорректной обработкой статуса 302 в некоторых браузерах.
По стандартам HTTP 1.0 браузер после получения ответа 302 должен использовать для нового запроса метод POST. Разработчики некоторых браузеров не соблюдают этот стандарт и используют для нового запроса метод GET. В HTTP 1.1. эту проблему решают редиректы 303 и 307.
Вместо 302 для временного перенаправления лучше использовать редиректы 303 и 307.
Редиректы 303 и 307
В HTTP 1.1 статус 303 предложен вместо редиректа 302. Значение кода – See Other или «Смотрите другой ресурс». Для нового запроса браузер должен использовать метод GET. Применяйте редирект 303, когда у вас нет адекватного ответа на запрос пользователя, но имеется более или менее подходящая замена.
Статус 307 также используется вместо редиректа 302. Значение кода – Temporary Redirect или «временное перенаправление». Браузер не должен менять метод нового запроса. Запросы безопасными методами GET и HEAD выполняются автоматически. Запросы небезопасными методами, например, POST, выполняются с подтверждением пользователя.
Используйте редирект 307, чтобы показать, что искомый ресурс временно доступен по другому адресу.
Промежуточный вывод: в большинстве случаев владельцам сайтов подходит редирект 301. В этом случае HTTP-статус уведомляет поисковых роботов, что документ навсегда перемещен на новый адрес. Этот вид редиректа передает авторитет и ссылочную массу со страницы-донора на страницу-акцептор. Редиректы 303 и 307 используются, когда владелец сайта хочет временно перенаправлять пользователей с одного документа на другой.
Какие типы редиректов бывают
Редиректы классифицируются по способу реализации. Настроить перенаправление можно через файл .htaccess или nginx.config, средствами PHP, HTML, JavaScript. Подробнее о каждом типе ниже.
Что такое htaccess-редирект
Так называют серверный редирект, который настраивается в файле .htaccess для сайтов, которые находятся на серверах под управлением Apache.
Чтобы настроить перенаправление, внесите изменения в файл .htaccess. Для доступа к файлу воспользуйтесь FTP-клиентом, например, FileZilla. В настройках программы в меню «Сервер» включите принудительное отображение скрытых файлов. Файл .htaccess находится в папке с названием доменного имени ресурса в каталоге public_html.
Чтобы отредактировать файл, скачайте его на жесткий диск компьютера. Для этого выделите файл и в контекстном меню выберите соответствующую опцию. Чтобы загрузить отредактированный файл на сервер, выделите его в списке файлов и папок на жестком диске, откройте контекстное меню и выберите нужную опцию.
В интерфейсе FTP-клиента FileZilla слева доступны файлы и папки локального компьютера, а справа — файлы и папки удаленного сервера.
Также доступ к файлу .htaccess можно получить через панель управления хостингом. В cPanel откройте раздел интерфейса «Файлы – Диспетчер файлов».
В настройках диспетчера включите отображение скрытых файлов.
Чтобы отредактировать файл .htaccess, откройте его в блокноте. Добавьте код редиректа. Сохраните изменения и загрузите файл на сервер.
О коде редиректов и настройках конкретных перенаправлений пойдет речь ниже.
Чтобы настроить редирект на сервере под управлением Nginx, нужно добавить код перенаправления в конфигурационный файл nginx.conf. Код добавляется в блоке server. Получить код редиректа можно с помощью конвертера.
PHP-редиректы
PHP-редирект работает на уровне сервера. Этот способ перенаправления считается менее предпочтительным по сравнению с редиректом через файл .htaccess, так как он работает медленнее. Но в некоторых случаях предпочтительнее использовать этот тип редиректа.
Например, если на сайте есть десятки страниц, для которых нужно прописать редирект, а также десятки страниц, для которых редирект не нужен, лучше настраивать перенаправления с помощью PHP.
Скачайте на жесткий диск файл index.php или откройте его для редактирования в диспетчере файлов панели управления хостингом. Файл находится в корневой папке сайта. Там же находится файл .htaccess.
Добавьте в файл index.php код редиректа. Сохраните изменения и загрузите файл на сервер.
JavaScript-редирект
Редирект с помощью кода JavaScript выполняется на стороне браузера, а не на стороне сервера. Чтобы посетитель попал со старой страницы на новую, скрипт редиректа должен полностью загрузиться в обозревателе. Поэтому JavaScript-редирект – более медленный способ перенаправления, чем серверные редиректы. Еще одна проблема — автоматическое перенаправление не сработает, если пользователь отключил в браузере JavaScript.
Тем не менее JavaScript-редиректы в некоторых случаях удобны. Например, их можно использовать для перенаправления с задержкой. Вы можете написать на старой странице сообщение вроде «Мы переехали на новый сайт, сейчас вы будете автоматически туда перенаправлены». Через несколько секунд пользователь автоматически попадет на новую страницу.
Чтобы реализовать перенаправление с помощью JavaScript, добавьте код редиректа между тегами <head> и </head> страницы, с которой нужно перенаправить пользователей. На сайтах под управлением WordPress это можно сделать с помощью бесплатного плагина Per page add to head.
Сохраните изменения на странице и проверьте, как работает редирект.
HTML-редирект
Этот тип перенаправления также работает на стороне браузера. Чтобы перенаправление сработало, обозреватель должен загрузить соответствующий HTML-код: метатег refresh. Поэтому этот тип редиректов работает медленнее перенаправлений на уровне сервера.
Чтобы реализовать редирект, добавьте код между тегами <head> и </head> страницы, с которой хотите перенаправить трафик.
Сохраните изменения и проверьте, как работает перенаправление.
Промежуточный итог: предпочитайте серверные редиректы, так как они удобнее для пользователей. В большинстве случаев перенаправление лучше настраивать через конфигурационный файл .htaccess для серверов на Apache и nginx.config для серверов на Nginx.
Как составить грамотное техзадание на разработку сайтаГде взять код редиректа
Если у вас нет соответствующей подготовки и знаний, есть два варианта. Можно обратиться к специалисту или воспользоваться онлайн-генератором кода. Подборка сервисов ниже сэкономит вам время и деньги:
- 301 Redirect Code Generator. Генерирует код редиректа для Apache, ASP и ASP.NET. Также создает код JavaScript и HTML-перенаправлений.
- Seomagnifier. Создает код редиректа 301 с домена с www на домен без www и наоборот.
- 301 Redirect Code Generator Tool. Создает редиректы со страницы на страницу, а также с домена без www на домен с www. Генерирует PHP-код, перенаправления для серверов на ASP и ASP.NET, HTML- и JavaScript-перенаправления.
- Генератор файла .htaccess. Создает код редиректов со страницы на страницу, а также между разделами сайта, генерирует скрипты перенаправлений с домена с www на домен без www.
- Универсальный генератор кода перенаправлений для .htaccess. Можно выбрать сценарий редиректа, указать URL и сгенерировать код.
- Генератор редиректов 301. Создает код перенаправлений для серверов на Apache, ASP, ASP.NET, а также код HTML- и JavaScript-редиректов.
- Генератор перенаправлений от Brontobytes. Поможет настроить редирект со старого домена на новый, изменить адрес отдельных страниц и разделов ресурса, настроить перенаправление с домена без www на домен с www.
- Пользователям серверов на Nginx будет полезен конвертер кода. Он трансформирует редиректы для .htaccess в перенаправления для nginx.config.
Как делать редиректы: популярные примеры
В этом блоке представлены наиболее популярные редиректы. Инструкции помогут вам настроить перенаправления без обращения к техническим специалистам.
Как сделать редирект с http на https
Часто владельцы сайтов сталкиваются с необходимостью сделать серверный редирект при переводе сайта на безопасный протокол соединения. Чтобы реализовать перенаправление, выполните следующие действия:
- Скачайте конфигурационный файл на жесткий диск или откройте его для редактирования в панели управления хостингом.
- Сгенерируйте код редиректа с помощью одного из предложенных выше сервисов.
- Добавьте код в файл, сохраните изменения и загрузите .htaccess на сервер.
Корректно перевести сайт на безопасный протокол помогут следующие ресурсы:
Как сделать редирект с или на www
Подробную инструкцию по перенаправлению с домена без www на домен без www через файл .htaccess читайте в статье о зеркалах сайтов. Если хотите, выполните этот же редирект с помощью php. Действуйте так:
- Загрузите на жесткий диск файл index.php.
- Сгенерируйте код редиректа.
- Вставьте код в файл, сохраните изменения и загрузите index.php на сервер.
- Укажите основной URL в настройках сайта. В WordPress это можно сделать в меню «Настройки – Общие».
В сгенерированном коде может быть упоминание сайта генератора. Оно не влияет на работу перенаправлений, поэтому его можно удалять.
Проверьте, как работает перенаправление. На иллюстрации ниже видно, что до настройки редиректа сайт был доступен по двум URL. После изменения файла index.php ресурс доступен по одному адресу.
Как настроить перенаправление с одной страницы
Чтобы настроить редирект с одной страницы на другую, отредактируйте файл .htaccess или index.php: добавьте в него сгенерированный код редиректа. Если сайт работает на WordPress, воспользуйтесь для настройки редиректов плагинами:
Перенаправления можно настраивать через панель управления сервером. В cPanel настройки доступны в разделе «Домены – Перенаправления». Инструкцию смотрите в статье о зеркалах сайтов.
Как настроить редирект при смене домена
При переезде на новый домен перенаправление настраивается так же, как редиректы с http на https или с домена с www на домен без www. Изменения можно внести через файл .htaccess или index.php.
Сгенерируйте код постраничного редиректа. Для этого укажите URL старого и нового домена и отметьте флажками опции, указанные на иллюстрации.
Добавьте код в файл .htaccess и сохраните изменения.
Как сделать редирект папки
Редирект папки (каталога, директории) можно настроить с помощью файлов .htaccess или index.php. Настройка перенаправлений может понадобиться, если в URL страниц отображаются названия директорий.
Например, в блоге о книгах URL может выглядеть так: https://exampleblog.ru/klassica/idiot. Автор создает отдельный каталог для русской классики и хочет, чтобы URL выглядел так: https://exampleblog.ru/russkaya-klassica/idiot. В .htaccess нужно добавить такой код:
RedirectMatch 301 ^/klassica/(.*)$ /russkaya-klassica/$1
Частные случаи: редирект слэша и редирект расширения
Одни владельцы сайтов предпочитают URL со слэшем в конце, а другие без слэша: https://exampleblog.ru/page/ и https://exampleblog.ru/page соответственно. Поисковые системы считают варианты со слэшем и без него разными URL. Поэтому важно выбрать предпочтительную структуру сетевых адресов и настроить перенаправления.
Сгенерируйте код редиректа и добавьте его в файл .htaccess. Убедитесь, что отметили галочкой нужную опцию.
Чтобы настроить перенаправления с адреса с расширением на адрес без расширения, сгенерируйте код и добавьте его в конфигурационный файл. Редирект с URL с расширением .html на URL с расширением .php выглядит так:
RewriteEngine on
RewriteRule index\.html index.php [NC,R]
С помощью генератора можно получить код для других перенаправлений, например, для редиректов с поддомена на каталог или с верхнего регистра на нижний.
Как проверить редирект
Проверить редирект можно в браузере. Почистите кэш или откройте обозреватель в режиме инкогнито и введите нужный URL. Также проверять перенаправления можно с помощью веб-сервисов:
Чекеры показывают вид редиректа и статус ответа сервера при переходе на новый адрес.
Сделать редирект просто
Для этого в первую очередь выберите вид редиректа. В большинстве случаев подходит перенаправление 301 или постоянный редирект. Иногда для временного перенаправления стоит использовать редирект 303 и 307.
Затем выберите тип редиректа. Быстрее всего работают серверные редиректы, которые настраиваются с помощью конфигурационных файлов .htaccess для серверов Apache и nginx.config для серверов Nginx. Также можно настроить PHP-редирект с помощью файла index.php. JavaScript- и HTML-редиректы работают медленнее, поэтому используйте их в исключительных случаях.
Сгенерируйте код редиректа с помощью одного из предложенных в статье сервисов и добавьте его в конфигурационный файл или в файл index.php. Проверьте корректность редиректа вручную или с помощью веб-сервиса.
kak-sdelat-redirekt-podrobnyy-obzor-dlya-gumanitarievtexterra.ru
что это, зачем нужен и как переадресовать страницу сайта
Мы увеличиваем посещаемость и позиции в выдаче. Вы получаете продажи и платите только за реальный результат, только за целевые переходы из поисковых систем
Мы выпустили новую книгу «Контент-маркетинг в социальных сетях: Как засесть в голову подписчиков и влюбить их в свой бренд».
Подпишись на рассылку и получи книгу в подарок!
Больше видео на нашем канале — изучайте интернет-маркетинг с SEMANTICA
Объясним на понятном примере. Представим, что вы арендовали небольшое офисное помещение в центре. Фирма постоянно растет и развивается, это место становится популярным. Ваш офис знают все, туда ходят постоянные клиенты. Его адрес вы указываете на рекламных буклетах.
Но проходит время и слишком маленькое помещение уже перестает удовлетворять всем вашим потребностям. Вы решаетесь переехать в помещение получше, но по совсем другому адресу. И тогда перед вами появляются два выбора. Первый ― начать рекламировать уже новый адрес под старым названием. А второй ― поместить бумажку с новыми контактами прямо на дверь старого офиса. Так вы и старых клиентов не потеряете, и новых обретете, если они случайно на двери наткнуться. Подобным образом и работает 301 редирект на другой домен.
Зачем нужен 301 редирект: основные области применения
Не все владельцы сайтов понимают, зачем нужен 301 редирект. Они просто переходят на новый адрес, заново занимаясь индексацией и продвижением ресурса в поисковых системах. Но это занимает слишком много времени.
Логичнее использовать 301 редирект на другой домен. При перенаправлении ваш сайт получает все показатели поисковых систем старой страницы. То есть, поисковым продвижением с нуля заниматься не придется ― если старый сайт уже был в ТОПе, он останется в нем и после перемещения.
Еще одна причина, по которой необходимо использовать 301 редирект — перенос контента страницы на другой адрес. Например при смене структуры сайта.
Так же через редирект многие избавляются от дублей страниц. Так поисковики оставляют в поиске только одну, нужную страницу. Частый пример таких случаев это переадресация страницы вида site.ru/index.php на страницу site.ru, т.к. и та и другая страница содержат в себе контент морды сайта.
Зеркало сайта также склеивают с помощью 301 редиректа (речь о версиях сайта на www или без www).
Как настроить 301 редирект
Использование системных файлов
Одним из самых надежных способов конфигурации считается использование системных файлов, создаваемых в корне сайта. Поисковые системы работают просто: при индексации страницы они автоматически ищут определенные ключевые слова, выполняя указанные команды. Таким же образом работает перенаправление.
Чтобы организовать 301 редирект страницы, необходимо использовать файл с названием htaccess. Создайте его и добавьте в корень сайта. Напишите в нем следующий код:
RewriteEngine On
RewriteCond %{HTTP_HOST} original.bla
RewriteRule (.*) http://new.bla/$1 [R=301,L]
Где original.bla и new.bla ― старый и новый адрес страницы соответственно. Таким же образом стоит проводить 301 редирект на https. Можно использовать и сокращенную версию, но подобный код непонятен. В сокращенной легко запутаться даже профессионалу.
Как сделать редирект 301 при помощи хостинга
Еще один способ того, как сделать 301 редирект, ― это воспользоваться встроенным инструментарием используемого хостинга.
Для этого необходимо зайти в панель управления, найти вкладку с настройками хостинга. Измените тип хостинга на «Перенаправление» или просто добавьте такую возможность ― это зависит от типа используемого инструментария. В нужные поля введите старый и новый адрес.
Таким образом можно легко организовать 301 редирект на www.
Особенности редиректа
Существует несколько особенностей ― при организации перенаправления их необходимо учесть. А именно:
- В первую очередь 301 редирект сайта с русскоязычным названием должен выполняться с помощью декодера. Сначала переведите домен в латиницу, а после ― пишите необходимый код.
- Проследите, корректно ли выполнены все редиректы. Если их несколько, они должны последовательно идти друг за другом, не соперничая и не споря. Учтите, что перенаправление идет «сверху вниз» ― вас перекинет на первый сайт в списке.
Способы проверки перенаправления
Даже в таком примитивном программировании существуют свои ошибки. Перенаправление можно проводить для каждой отдельной страницы. В таком случае проверку стоит проводить после каждой новой строчки.
Для того, чтобы определить, корректно ли все организовано, пройдитесь по сайту. Перейдите на старый адрес, проверьте, кидает ли вас на нужные страницы. Делать это лучше вручную.
semantica.in
Что такое 301 редирект? Как настроить 301 редирект?
Случается такое, что веб-страница или весь сайт целиком переезжает на новый URL-адрес навсегда. В этом случае необходимо прописывать 301 редирект. Что это? 301 редирект — это перенаправление посетителей и поисковых роботов с одного URL-адреса на другой.
301 редирект обычно прописывается в следующих случаях:
- при склеивании зеркал сайта с www и без www;
- при переезде сайта на новый домен;
- при переносе сайта на новую CMS;
- при изменении URL-адресов страниц;
- при устранении дублей страниц сайта.
Как ни странно, последний случай рассматривают крайне редко, хотя при устранении дублей 301 редирект помогает как никто другой, если, конечно, у вас нет желания ковырять код самой CMS. А если вы занимаетесь поисковой оптимизацией сайтов, то вопрос наличия или отсутствия дублей у страниц сайта обязательно должен вас волновать.
301 редирект замечателен тем, что он передает pr-страниц и тИЦ сайта, а соответственно и ссылочный вес новому URL. Но зато он не передает наложенные на старый домен санкции со стороны поисковых систем, что вдвойне приятно.
Итак, с тем, что такое 301 редирект, разобрались. Перейдем непосредственно к тому, как его сделать.
Как настроить 301 редирект
Для начала я приведу список операторов регулярных выражений, которые пригодятся вам при настраивании 301 редиректов.
- ^ — ограничение слева;
- $ — ограничение справа;
- * — 0 и более символов;
- + — 1 и более символов;
- . — любой символ;
- \ — экранирование;
- () — переменная;
- [] — диапазон значений.
Существуют различные способы того, как сделать 301 редирект. Лично я, как и многие другие вебмастера, настраиваю его через файл .htaccess. Данный файл есть практически у каждой популярной CMS, и находится он в корне вашего сайта. Скачать .htaccess можно через FTP при помощи клиента FileZila:
Файл .htaccess следует открыть текстовым редактором, к примеру, Notepad++. Поверх всех кодов редиректов вам следует прописать следующую строку:
RewriteEngine On
В противном случае редиректы работать не будут.
Многие ошибочно полагают, что можно обойтись и без 301 редиректа. Я могу вам сказать, что он необходим при оптимизации практически каждого сайта. К примеру, абсолютно каждый сайт изначально доступен по двум адресам — с www и без www. Беда в том, что это приводит к размыванию ссылочной массы. Объясню почему. Другим сайтам абсолютно все равно, какой из двух вариантов написания вашего домена является основным. Если они будут ставить на вас ссылки, то в адресе могут прописывать как вариант с www, так и без www. Ссылочная масса в итоге будет размыта, а поисковики в любом случае будут индексировать только один вариант. Когда-то так они вообще воспринимали их как совершенно разные сайты.
Чтобы ваш сайт активно рос в позициях и не терял ссылочную массу, требуется в файле .htaccess прописать 301 редирект.
С www на без www:
RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC] RewriteRule (.*) http://site.ru/$1 [R=301,L]
С без www на www:
RewriteCond %{HTTP_HOST} ^site.ru$ [NC] RewriteRule (.*) http://www.site.ru/$1 [R=301,L]
Если приведенные выше коды редиректа не сработают, то воспользуйтесь следующей записью для редиректа с www на без www:
RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
Помните, что вместо site.ru нужно прописывать домен вашего сайта. После проделанных действий сохраните файл .htaccess и закачайте его на сервер, заменив им старый файл.
301 редирект очень часто выручает меня, когда я борюсь с дублями страниц сайта. А это я делаю практически каждый раз, когда выполняю внутреннюю оптимизацию очередного сайта. Лично я еще не встречал CMS, которая бы не генерировала дубли. Хотя если речь идет о небольшом сайте, то бывают исключения. Понятия не имеете, о чем я сейчас говорю? Тогда подписывайтесь на обновления, вскоре я напишу о дублях целую статью.
Бывает такое, что страница сайта доступна сразу по двум URL-адресам вида: http://site.ru/category/page.html и http://site.ru/page.html. В данном случае идет речь о дублях. К примеру, мы хотим, чтобы страница была доступна только по адресу второго вида. В таком случае для избавления от дубля необходимо прописать следующий редирект:
RewriteRule ^(.*)category/page.html$ http://site.ru/page.html [R=301,L]
Теперь представьте ситуацию, что вы изменили адрес страницы сайта. Для чего? Да, могут быть самые разные причины. Я, к примеру, совсем недавно это делал с целью укорачивания длины URL. Для этого вам понадобится следующий редирект:
RewriteRule ^(.*)old-page.html$ http://site.ru/new-page.html [R=301,L]
Если приведенный выше код редиректа не сработает, попробуйте следующий:
RewriteRule ^old-page.html$ http://site.ru/new-page.html [R=301,L]
Или такой:
RewriteRule ^old-page.html$ /new-page.html [R=301,L]
Если требуется сделать редирект со старого URL-адреса на кириллице на новый URL-адрес (хоть на кириллице, хоть на латинице), то запись будет иметь вид:
RewriteRule ^старый-урл.html /new-page.html [R=301,L]
Как вы понимаете, выше мы рассматривали редиректы с одного URL на другой в пределах одного сайта. Для этого мы использовали mod_rewrite и директиву RewriteRule. Но можно обойтись и более простым вариантом записи редиректа при помощи директивы Redirect:
Redirect 301 /old-page.html http://site.ru/new-page.html
Оба варианта записи редиректа корректны и передают ссылочный вес и другие показатели. Они отличаются лишь тем, что используют директивы разных модулей, и поэтому имеют различный синтаксис. При использовании директивы Redirect сначала прописывается старый адрес страницы без http://site.ru, а затем новый адрес полностью.
301 редирект может вам понадобиться при переезде сайта со старого домена на новый:
RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.old-domen\.ru$ [NC] RewriteRule ^(.*)$ http://new-domen.ru/$1 [L,R=301] RewriteCond %{HTTP_HOST} ^old-domen\.ru$ [NC] RewriteRule ^(.*)$ http://new-domen.ru/$1 [L,R=301]
Аналогичный редирект с использованием директивы Redirect:
Redirect 301 / http://new-domen.ru
Можно прописать 301 редирект URL с параметром на любую другую страницу сайта, к примеру, главную:
RewriteCond %{QUERY_STRING} ^cPath=373_703 RewriteRule ^index\.php$ http://site.ru/? [L,R=301]
Приведенный выше пример из моей практики, когда я проводил внутреннюю оптимизацию сайта на Joomla, у которого было огромное количество различных дублей.
Редирект с site.ru/index.php на site.ru (избавляемся от дубля главной страницы):
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://site.ru/ [L,R=301]
В результате наличия у главной страницы сайта дубля вида site.ru/index.php аналогичные дубли могут появляться и у внутренних страниц сайта, к примеру, site.ru/index.php/page.html является дублем страницы site.ru/page.html. В данном случае все дубли такого вида разом можно устранить при помощи редиректа:
RewriteRule ^index\.php/(.*)$ /$1 [R=301,L]
Если у главной страницы вашего сайта есть дубль вида site.ru/main.html, то следует прописать следующий редирект:
RewriteEngine On RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /main\.html\ HTTP/ RewriteRule ^main\.html$ http://vash-sait.ru/ [R=301,L]
или же такой вариант:
Redirect 301 /main.html http://site.ru/
Теперь представим ситуацию, что вы хотите, чтобы все внутренние страницы сайта были доступны только по адресу с .html на конце. Тогда следует прописать следующий редирект:
RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?) RewriteRule .* %1.html [R=301,L] RewriteRule ^(.*)/$ /$1.html [R=301,L]
Если же наоборот вы хотите, чтобы все внутренние страницы сайта имели адрес без .html на конце, то есть адрес вида site.ru/page, то следует прописать редирект:
RewriteCond %{REQUEST_URI} \.html$ RewriteRule ^(.*)\.html$ /$1 [R,L]
Если стоит задача редиректа с URL-адресов с .htm на конце на адреса с .html на конце, то в .htaccess следует добавить следующую запись:
RewriteBase / RewriteRule ^(.*)\.htm$ $1.html [R=301,L]
Возможно, вам потребуется сделать редиректы с URL-адресов без суффиксов на адреса со слэшем на конце. Тогда в файле .htaccess следует прописать следующее:
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !\..+$ RewriteCond %{REQUEST_URI} !/$ RewriteRule (.*) http://www.site.ru/$1/ [R=301,L]
Если задача полностью противоположная, и требуются редиректы с URL-адресов со слэшем на конце на адреса без суффикса, то добавьте следующий код:
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^(.+)/$ RewriteRule ^(.+)/$ /$1 [R=301,L]
Чтобы прописать редирект с URL-адреса с параметром вида http://site.ru/?page_id=111, добавьте в .htaccess следующее:
RewriteCond %{QUERY_STRING} page_id=111 RewriteRule ^ http://site.ru/new-page/ [R=301,L]
Также совсем недавно столкнулся с сайтом, для которого был получен сертификат о его безопасности, и было необходимо прописать редирект с http на https:
RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Теперь вы знаете, как прописать 301 редирект. Конечно же, существуют и другие случаи, когда он необходим, но я указал наиболее популярные из них. После любой задачи, касающейся оптимизации сайта, я рекомендую производить проверку на ошибки.
Как проверить 301 редирект
301 редирект проверяется очень просто. Все, что вам нужно, это ввести в строке браузера старый адрес страницы. Если произойдет перенаправление на новый URL-адрес, то скорее всего редирект прописан верно. В некоторых случаях перед тем как проверить 301 редирект, приходится чистить кэш браузера. Поэтому если перенаправление не происходит, возможно, вы забыли это сделать.
Чтобы окончательно убедиться в том, что 301 редирект настроен верно, рекомендую также проверить ответ сервера при помощи специальных сервисов, к примеру, 2ip.ru, а еще лучше воспользуйтесь программой Netpeak Spider, при помощи которой можно узнать еще и много другой информации о сайте. Ответ сервера должен быть «301 » или же «301 MovedPermanently -> 200 OK».
Надеюсь, теперь Вы поняли, как правильно настраивать 301 редирект. Выше я привел достаточное количество различных примеров. Если не сработает один тип записи редиректа, скорее всего сработает другой. Пробуйте. От чего зависит, какая именно запись редиректа сработает, точно сказать не могу, так как не являюсь программистом. Возможно, от CMS или настроек сервера. Также иногда влияет расположение кода редиректа в файле .htaccess. Если редирект не срабатывает, попробуйте перенести его код чуть выше по файлу. На этом у меня все. Успехов в оптимизации сайтов!
yaroslaff.su
www на без www, http на https, с домена на другой домен
Три важных совета и семнадцать конкретных примеров установки 301 переадресации страниц через htaccess!
Советы
- Располагайте переадресации страниц в файле от частных к более глобальным (сверху вниз). Например: простая переадресация двух страниц стоит выше, чем глобальное правило редиректов с www на без www.
- Избегайте двух, трех и т.д. последовательных редиректов. Правила должны быть настроены так, что при возникновении редиректа он должен перенаправлять пользователя (робота) только один (!) раз. Каждое лишнее переадресация – это секунды драгоценного времени отдачи страницы, это нагрузка на сервер, это нечеткие команды для поисковых роботов.
- Не забывайте, что многие браузеры кешируют (запоминают редиректы), поэтому проверять переадресации лучше на сайте – http://www.bertal.ru.
Правила переадресаций
1. 301 редирект с одной страницы на другую
Самый простой вариант
1 | Redirect 301 /test-1/ http://site.ru/test-2/ |
Redirect 301 /test-1/ http://site.ru/test-2/
Более подробный
1 2 | RewriteCond %{REQUEST_URI} ^/test/$ RewriteRule ^.*$ http://site.ru/new-test/? [R=301,L] |
RewriteCond %{REQUEST_URI} ^/test/$ RewriteRule ^.*$ http://site.ru/new-test/? [R=301,L]
2. 301 редирект с www на без www (главное зеркало – домен без www)
1 2 | RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [L,R=301] |
RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
3. 301 редирект с без www на www (главное зеркало – домен с www)
1 2 | RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301] |
RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]
4. 301 редирект со страниц со слешем на без слеша (весь сайт)
1 2 3 4 5 6 | RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteRule ^(.*)\/$ /$1 [R=301,L] |
RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteRule ^(.*)\/$ /$1 [R=301,L]
5. 301 редирект со страниц без слеша на слеш (часто в CMS системах устанавливается автоматически)
1 2 3 4 5 6 | RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteRule ^(.*[^\/])$ /$1/ [R=301,L] |
RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]
6. Один (а не два последовательных!) 301 редирект на без www и с слешем на конце адреса страницы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1/ [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://%1/$1/ [L,R=301] |
RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1/ [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://%1/$1/ [L,R=301]
7. Один (а не два последовательных!) 301 редирект на c www и со слешем на конце адреса страницы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://www.%1/$1/ [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1/ [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301] |
RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://www.%1/$1/ [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1/ [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]
8. Один (а не два последовательных!) 301 редирект на c www и без слеша на конце адреса страницы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | RewriteCond %{REQUEST_URI} ^\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} \/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)\/$ http://www.%1/$1 [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} \/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)\/$ http://www.%1/$1 [L,R=301] |
RewriteCond %{REQUEST_URI} ^\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} \/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)\/$ http://www.%1/$1 [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} \/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)\/$ http://www.%1/$1 [L,R=301]
9. Один (а не два последовательных!) 301 редирект на без www и без слеша на конце адреса страницы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | RewriteCond %{REQUEST_URI} ^\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} \/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)\/$ http://%1/$1 [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} \/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)\/$ http://%1/$1 [L,R=301] |
RewriteCond %{REQUEST_URI} ^\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} \/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)\/$ http://%1/$1 [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [L,R=301] RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} \/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)\/$ http://%1/$1 [L,R=301]
10. 301 редирект только адреса site.ru/index.php (без GET параметров) на основное зеркало site.ru
1 2 3 | RewriteCond %{REQUEST_URI} /index.php RewriteCond %{QUERY_STRING} ^\z RewriteRule ^(.*)$ http://site.ru/? [R=301,L] |
RewriteCond %{REQUEST_URI} /index.php RewriteCond %{QUERY_STRING} ^\z RewriteRule ^(.*)$ http://site.ru/? [R=301,L]
11. 301 редирект всех адресов с index.php и GET параметрами на страницы только с GET параметрами (вырезать в url index.php)
Пример: типа site.ru/index.php?n=1 на site.ru/?n=1
1 2 | RewriteCond %{REQUEST_URI} /index.php RewriteRule ^(.*)$ http://site.ru/ [R=301,L] |
RewriteCond %{REQUEST_URI} /index.php RewriteRule ^(.*)$ http://site.ru/ [R=301,L]
12. 301 редирект для index.php, index.html или index.htm (например в Joomla), массовая склейка
1 2 | RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/ RewriteRule ^(.*)index\.(php|html|htm)$ http://site.ru/$1 [R=301,L] |
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/ RewriteRule ^(.*)index\.(php|html|htm)$ http://site.ru/$1 [R=301,L]
13. 301 редирект url с GET параметрами (динамический URL) на статический
1 вариант (простой адрес с GET параметром)
1 2 | RewriteCond %{QUERY_STRING} ^id=229 RewriteRule ^.*$ /supermodel/? [R=301,L] |
RewriteCond %{QUERY_STRING} ^id=229 RewriteRule ^.*$ /supermodel/? [R=301,L]
2 вариант (со страницы и GET параметром)
1 2 3 | RewriteCond %{REQUEST_URI} /test/ RewriteCond %{QUERY_STRING} ^id=229 RewriteRule ^.*$ /supermodel/? [R=301,L] |
RewriteCond %{REQUEST_URI} /test/ RewriteCond %{QUERY_STRING} ^id=229 RewriteRule ^.*$ /supermodel/? [R=301,L]
14. Все страницы одного домена на главную страницу другого домена
1 2 | RewriteCond %{REQUEST_URI} (.*) RewriteRule ^(.*)$ http://site.ru/ [L,R=301] |
RewriteCond %{REQUEST_URI} (.*) RewriteRule ^(.*)$ http://site.ru/ [L,R=301]
15. Каждая страница одного домена на такой же адрес другого url
1 2 | RewriteCond %{REQUEST_URI} (.*) RewriteRule ^(.*)$ http://site.ru/$1 [L,R=301] |
RewriteCond %{REQUEST_URI} (.*) RewriteRule ^(.*)$ http://site.ru/$1 [L,R=301]
16. Редирект с протокола http на https.
1 2 | RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] |
RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Если возникает циклический редирект, то воспользуйтесь этим вариантом:
1 2 3 | RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] |
RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Для Битрикс-сайтов на хостинге reg.ru
1 2 | RewriteCond %{SERVER_PORT} !^443$ RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L] |
RewriteCond %{SERVER_PORT} !^443$ RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
Для сертификатов https c Cloudflare:
1 2 3 4 | RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"' # Without Cloudflare: # RewriteCond %{HTTPS} off RewriteRule ^ https://www.example.com%{REQUEST_URI} [NE,R=301,L] |
RewriteCond %{HTTP:CF-Visitor} ‘»scheme»:»http»‘ # Without Cloudflare: # RewriteCond %{HTTPS} off RewriteRule ^ https://www.example.com%{REQUEST_URI} [NE,R=301,L]
17. Редирект с протокола https на http.
Обратный редирект, если перестали использовать SSL сертификат.
1 2 | RewriteCond %{HTTPS} =on RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L] |
RewriteCond %{HTTPS} =on RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
UPDATE 06/06/2019
Автор
Андрей Воскобойников
web-optimizator.com
Редирект (redirect) что это и зачем он нужен?
В Интернете часто можно встретить понятие redirect (редирект). Давайте разберемся, что это такое и зачем это нужно.
Начнем с самого определения. Redirect (редирект) – с англ. переводится как переадресовывать. Кого переадресовывать и куда переадресовывать? Давайте посмотрим на примере.
Представим себе ситуацию, вы хотите зайти на сайт http://abc.ru. Вы набрали адрес этого сайта в адресную строку браузера, нажали на кнопку «Перейти», но вместо сайта http://abc.ru у вас открывается сайт http://def.ru
Произошел так называемый редирект. Вас переадресовали с одной веб-страницы на другую.
Для чего это вообще может быть нужно? Зачем такие сложности в подмене адреса?
Дело в том, что в процессе разработки сайта, в нем могут меняться многие вещи:
+ Какие-то страницы переехали в другое место.
+ Меняется общая структура сайта.
+ Или вообще, автор решил поменять название (доменное имя) сайта.
Во всех этих случаях, если обратиться к странице по старому адресу, то сервер не сможет выдать нужной информации и выдаст ошибку, у которой будет код 404.
Наверно, часто приходилось видеть такую картину?
Страница не найдена по тому адресу, по которому вы ее ищете.
Чтобы избежать такой ситуации и чтобы вместо ошибки отображалась нужная страница, но по новому адресу, используют редиректы.
Основная их задача направить вас в нужное место, где вы можете получить всю самую свежую и актуальную информацию.
Также может быть ситуация, что вы рекламируете в Интернет какой-либо курс или товар и вам не хотелось бы, чтобы пользователи видели исходный url-адрес и вам нужна подробная статистика переходов по каким-либо ссылкам.
Возможно этот url-адрес может быть слишком длинным.
По этому адресу можно явно определить, что это какое-то рекламное сообщение и можно просто обрезать какую-то часть адреса и вам не будет засчитан переход.
Вы хотите увидеть сколько конкретно человек и когда перешло по вашей ссылке.
Чтобы решить эти проблемы, вы можете воспользоваться специальным скриптом, который организует целый редирект центр.
Скрипт так и называется Redirector. Почитать о нем подробнее можно здесь.
webgyry.info
что это и зачем нужен? 5 причин для использования редиректа
При работе над оптимизацией и продвижением сайтов иногда возникает необходимость настроить 301-й редирект. В связи с этим у наших клиентов часто возникает вопрос, что такое 301-й редирект и для чего он нужен. Сегодня я постараюсь ответить на этот вопрос.
Итак, начнем с определения. Редирект — это скрипт (программа), принудительно перенаправляющий пользователя с выбранной им страницы на другую.
То есть пользователь набирает в адресной строке браузера один адрес сайта, а попадает на другой. Но это не значит, что содержимое страницы/сайта обязательно будет иным. Хотя на многих некачественных сайтах именно так и случается.
Теперь разберемся, зачем нужен 301-й редирект и когда он используется
1. При склеивании зеркал сайта. Любой сайт по умолчанию доступен как http://www.сайт.ru, так и http://сайт.ru. Для продвижения мы советуем выбрать что-то одно. Наличие нескольких зеркал сайта может привести к неправильному распределению ссылочной массы на разные домены и негативно повлиять на продвижение сайта.
2. При переносе сайта на другой домен. Случается, что сайт попадает под какой-либо фильтр поисковиков, тогда трафик начинает снижаться или совсем пропадает. Появляется необходимость перенести сайт на новый домен. Как же тогда быть с вашими клиентами? Или с теми, кто добавил сайт в закладки, подписался на рассылку? Чтобы не потерять таких клиентов и пользователей, и нужно настроить 301-й редирект.
3. Для сохранения трафика из поисковиков, увеличения пузомерок. К примеру, вам надо увеличить тИЦ и PR конкретному сайту (основному зеркалу). Вы покупаете домен с хорошими пузомерками и делаете редирект на ваш основной сайт. Тогда все показатели нового домена будут переданы вашему сайту, в том числе тИЦ, PR и поисковый трафик.
4. Когда необходимо изменить адреса страниц. К примеру, какая-то страница вашего сайта хорошо индексируется и занимает верхние позиции в поисковиках. Вы не хотите, чтобы она выпала из индекса? Тогда 301-й редирект – то, что вам нужно.
5. При переходе с одного хостинга на другой, когда адрес сайта тоже меняется.
Также 301-й редирект используется и в других случаях, но пока остановимся на пяти. Про другие как-нибудь еще напишем.
Правильно настроенный 301-й редирект поможет передать новому адресу сайта/страницы все показатели и характеристики старого. Будет произведена так называемая полная склейка адресов сайта.
301-й редирект настраивается разными способами и зависит от вашего программного обеспечения. Но это опять же тема другой статьи.
P.S.: Если у вас возникнут сложности с настройкой 301-го редиректа, наши специалисты всегда готовы вам помочь. Эти работы, а также комплекс услуг по оптимизации сайта входят в Поисковое продвижение сайта.
1ps.ru
301 редирект что это такое и как его настроить?
Здравствуйте уважаемые пользователи блога. Сегодня в статье я расскажу о важной составляющей любого сайта — 301 редирект.
В данном посту поведую о том, что это вообще за редирект, как его настроить и как использовать его в htaccess для страниц блога. Итак, начнем!
Что такое 301 редирект?
Главной задачей 301 редиректа — это перенаправление всех хостов с одной страницы блога на следующую.
Зачем он нужен?
Не правильный 301 редирект может выдавать ошибку сервера 301. Это означает, что веб-ресурс перенесен на новое доменное имя. Все пришедшие посетители будут перенаправляться по адресу нового сайта, при этом все качества и свойства в глазах поисковика будут переданы со старого на новый URl-адрес. Не проведя нужные настройки произойдет склейка доменного имени с прежним, все показатели ТИЦ и PR тоже перейдут к новому URL.
Что от этого будет?
Если так посудить, то под фильтры и баны вы не попадете, однако это не есть хорошо. В первую очередь это отражается на рейтинге вашего блога, на показателях пузомерки, ссылочной массе, авторитете у поисковых систем, выдаче в Яндексе, Гугле, а следовательно и посещаемости.
Проще говоря, настроить 301 редирект нужно обязательно. От этого зависит, сколько вы будете потом зарабатывать на своем веб-ресурсе, а может и вовсе не сможете, если редирект будет не правильный.
Надеюсь, вам понятно, почему 301 редиректу уделяют так много внимания в блогосфере.
Как настроить редирект для домена www и без www?
Сейчас мы уяснили с вами то, что настроить редирект нужно в обязательном порядке. Как же это сделать. Обо всем по порядку.
Скажу сразу, почему нам надо настраивать редирект. Немного я об этом уже сказал, но не до конца. В общем, от нас требуется корректное отображение ответа сервера 301. Проведя настройку, мы якобы скажем поисковым системам, что сайт перешел на новый домен, а прежний подлежит удалению. Яндекс и Гугл произведут удаление и всё, развитие вашего ресурса будет идти стремительных ходом. Разумеется, если вы сами этого захотите.
Теперь перейдем к настройке редиректа для сайта с www и без www.
Уже не по правилу, а по закономерности сложилась традиция производить набор доменного имени с атрибутом WWW. Поэтому мы не будем отходить от исконно прижившихся правил и склонимся к данному варианту прописи.
Существует ряд способов настройки, о которых я и расскажу. Потом не забудьте прочитать статью про дубли страниц и robots.txt. Все это очень важно для продвижения блога в поисковых системах. Особенно, если вы давно не замечаете хороший трафик с Google. Короче, читайте и получайте важную инфу.
Кстати, клей может проходить не только, когда вы переходите с одного доменного имени на другое, а непосредственно все может произойти с одним адресом URL. Например, у вас блог www.domen-bloga.net на него можно попасть через адрес www.domen-bloga.net или же через domen-bloga.net. Ваша задача сказать роботу поисковика, что нужно работать вот с этим, а не с этим.
Ранее в статье говорил, что будет проблема с рейтингом, а это все ваши показателями, выдача и т.д. Чаще всего, происходит склейка ТИЦ, было десять стало 0, да еще и минус 10 дадут.
Что-то я углубился, выходим на стартовую дорожку.
Открываем свой хостинг, либо соединяемся с корневой директорией при помощи FTP-клинета, например, FileZilla.
Ищем файл .htaccess. Нет, такого не может быть. Значит надо вернуться к началу создания сайта и посмотреть там, почему этого файла нет. Как правило, он у всех присутствует, если нет, создайте его. Адрес, куда идти: ваш сайт — в списке, где wp-admin, wp-content там должен быть нужный нам файл.
Открываем .htaccess в AkelPad или воспользуйтесь весьма популярной программой в блогосфере программой Notepad++.
Слушайте внимательно. Мы настраиваем редирект с www. на site.ru (без www). Для этого необходимо вставить в конце открытого файла вот этот код.
# редирект 301
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.vash_sait\.ru$ [NC]
RewriteRule ^(.*)$ [R=301,L]
Там, где написано vash_sait прописываем свое доменное имя. «\» не удаляем. Он должен стоять перед ru.
Сохраняем файл и переносим обратно в файловый менеджер хостинга.
Кто не понял, обращайтесь, я объясню.
Теперь проводим настройку редиректа с site.ru (без www) на www. Вставляем в конец файла .htaccess код:
# редирект 301
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^vash_sait\.ru$ [NC]
RewriteRule ^(.*)$ [R=301,L]
Настройки те же. Прописываем свой сайт в 4 пункте, как и в первом случае.
Сохраняем и закидываем на хостинг.
ДЛЯ НОВИЧКОВ.
Смотрите не путайте. Нужно выбрать лишь один из вариантов, которые я прописал выше с www или без www.
Сразу два кода вставлять не надо, только один.
Переходим к robots.txt. Это очень важный файл вашего сайта, какой он должен быть и еще ряд настоек 301 редиректа прочитайте в статье про «Как найти дубли страниц на wordpress блоге и почему все наши robots.txt НЕ ПРАВИЛЬНЫЕ!!!»
Настраиваем редирект 301, если перешли на другой домен.
Итак, вы сменили доменное имя, но при этом не желаете терять трафик с поисковых систем и постоянных читателей. Проблема решается достаточно просто.
Опять же будем работать с файлом .htaccess. В самый конец вставляем код:
RewriteEngine On
RewriteCond %{HTTP_HOST} site_a.ru
RewriteRule (.*) [R=301,L]
Суть заключается в том, что после того, как введете адрес своего прежнего домена, автоматически произойдет переход на новый URL. Проблем с этим возникнуть не должно. Теперь поисковики должны понять на каком домене расположен ваш блог.
Как использовать редирект в htaccess для прочих страниц блога?
.htaccess — это многофункциональный файл, обладающий рядом возможностей. Вот еще очередное решение проблемы при помощи этого файла.
Наверное, случается такое, когда страница выдает ошибку 404 или любую другую. Так вот, для того, чтобы посетитель не ушел оттуда прочь, а прочитал ваши статьи и нашел нужную информацию надо вам перенаправить его на нужную страницу, где вы скажете, почему случилось так, что выдает ошибку, где можно найти все статьи, как с связаться с автором и т.д.
Короче вставляем этот куда в конце файла:
ErrorDocument 400 /errors/badrequest.html
ErrorDocument 401 /errors/authreqd.html
ErrorDocument 403 /errors/forbid.html
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/serverr.html
Да, и не забудьте заменить /errors*.html на путь к страницам, где есть ошибка. Вот и все, что хотел бы рассказать вам в этом посту.
Всем пока и до новых встреч.
С уважением, Жук Юрий.
isif-life.ru