Где прописать редирект 301. Редирект с помощью директивы RewriteRule модуля mod_rewrite. Общение между браузером и веб-серовром

Редирект – это способ переадресации пользователей и поисковых роботов на URL адрес, который отличается от первоначально запрошенного. Существует несколько видов переадресации, некоторые из которых приведены ниже.

301 Moved Permanently

301 – постоянный редирект, который указывает на то, что запрашиваемая страница находится по новому адресу, а старый нужно считать устаревшим. Такой вид редиректа передает 90-99% ссылочной массы на новый URL.

Канонизация или склейка домена

Для склейки домена с www на без www:

RewriteCond %{HTTP_HOST} ^www.site\.com$ RewriteRule ^(.*)$ http://site.com/$1

Для склейки домена с без www на с www:

RewriteCond %{HTTP_HOST} ^site\.com$ RewriteRule ^(.*)$ http://www.site.com/$1

Для правильного выбора метода склейки нужно рассмотреть такие факторы:

  • У какого варианта выше индексация;
  • У какого варианта выше позиции в выдаче;
  • Канонизация слэша в конце адреса.

При создании проекта сайта нужно решить, использовать ли слэш в конце адреса. Для поисковых систем адреса вида:

  • http://www.site.com/category1
  • http://www.site.com/category1/

Являются разными URL. Поэтому когда решите, какого вида будут адреса у вас на сайте, нужно прописать такой код для того, чтобы убрать слэш в конце:

RewriteCond %{HTTP_HOST} (.*) RewriteCond %{REQUEST_URI} /$ RewriteRule ^(.*)(/)$ $1

или такой, чтобы добавить его:

RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*[^/])$ $1/

Для редиректа 301 одной страницы на другую :

Redirect 301 /oldpage.html http://www.site.com/newpage.html

Чтобы убедиться, что при запросе любой версии главной страницы, к примеру: default.htm или index.html , будет произведен редирект на каноничную страницу http://www.site.com , нужно прописывать следующий код редиректа:

RewriteCond %{THE_REQUEST} ^{3,9}\ /([^/]+/)*(default|index|main)\.(html|php|htm)\ HTTP/ RewriteRule ^(([^/]+/)*)(default|main|index)\.(html|php|htm)$ http://www.site.com/$1

Редирект каталога

Если в адресе у вас отображается структура каталога, то при изменениях у вас будет менять и адрес. Поэтому нужно прописывать такой редирект:

RewriteRule ^(.*)/old-catalog/(.*)$ $1/new-catalog/$2

Но бывает так, что адрес старого каталога отображается сразу после доменного имени, например www.site.com/old-catalog/ . В этом случае используется такой код:

RewriteRule old-catalog /(.*) / old-catalog /$1

Редирект при изменении расширения файлов

При смене CMS обычно меняется только расширении файлов. Для канонизации страниц в этом случае нужно использовать код вида:

RedirectMatch 301 (.*)\.php$ http://www.site.com$1.html

Редирект при появлении нескольких слэшей или тире

По разным причинам бывает, что в адресе появляются лишние слэши или тире, например www.site.com/catalog////page-1.html . Такие страницы нужно переадресовывать на адреса с одним слэшем .

RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ RewriteRule . %1/%2

Таким же образом убираются и лишние тире в адресе, например изменение www.site.com/catalog/page-1.html на www.site.com/catalog/page-1.html .

RewriteCond %{REQUEST_URI} ^(.*)-(.*)$ RewriteRule . %1-%2

.htaccess - лишние слэши после имени домена

  • http://site.com//////catalog

Чтобы убрать все эти слэши так, чтобы было перенаправление на страницу без слэшей, т.е.

  • http://site.com/catalog

Нужно прописать:

RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ RewriteRule . %1/%2

Генерация 301 редиректов

Если технических знаний для написания собственного кода не хватает, то есть специальные сервисы генерации всех основных редиректов:

Здесь вы можете, вставив свои данные, мгновенно получить нужный код. Поддерживаются редиректы для доменов, url адресов, каталогов.

Как проверить 301 редирект?

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

  • Проверить работает ли вообще сайт – зайти на его главную страницу;
  • Побродить по сайту, его разделам и отдельным страницам.

Но есть и сервисы для автоматической проверки редиректа:

  • http://bertal.ru – очень подробные данные обо всех откликах сервера

Правила использования 301 редиректа vs Canonical

Поисковая система Google устанавливает четкие правила, только при соблюдении которых, она будет верно трактовать ваши действия. Вот как буквально понимают поисковики 301 и Canonical:

  • данная страница является устаревшей, новая страница находится по адресу такому-то. Прошу удалить старую страницу из индекса, а новую проиндексировать и полностью передать на нее весь вес старой.
  • Canonical – кроме этой версии страницы у меня есть еще и другие. Но ты, пожалуйста, индексируй только ту, на которой стоит Canonical. Другие версии будут лежать для того, чтобы их могли просматривать люди, но тебе включать их в индекс не нужно. Весь вес стоит передавать именно на страницу с Canonical.

Предпочтения по использованию редиректа 301

Обычно, это наиболее предпочтительный метод:

  • Для отдельных страниц – если навсегда изменился ее адрес;
  • Для доменов – если сайт будет находиться постоянно на новом домене;
  • Для страниц 404 и страниц с контентом, который более не актуален. К примеру, при удалении товара из каталога можно сделать редирект на похожий по функциям товар или на страницу каталога с этим типом товаров.

Когда лучше не использовать редирект 301

  • Если их реализация невозможна или она займет неоправданно много времени.
  • Если контент дублируется на двух страницах, но обе они должны быть доступны пользователю ввиду некоторых отличий (к примеру, размера одежды).
  • Если одна страницы имеет несколько URL (сортировка каталога по разным критериям).
  • Для кросс-доменов, когда контент на двух адресах может дублироваться, но он должен быть на каждом из доменов.

Понравился пост? Нажми на кнопочки →

Правила приведены для сервера Apache. В правилах: %{QUERY_STRING} - обозначает фрагмент URL -адреса после знака вопроса (задания значений CGI -параметров). Срабатывание того или иного правила для редиректа определяется тем, попадает URL -адрес страницы под это правило или нет. О значении тех или иных обозначений (^, $, NC и т.д.) .

Ниже даны наиболее используемые правила настройки файла.htaccess для 301 редиректа. Лучше размещать все правила после двух строк:

Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^site\.ru$ RewriteRule ^(.*)$ http://www.site.ru/$1 RewriteCond %{HTTP_HOST} ^www.site\.ru$ RewriteRule ^(.*)$ http://site.ru/$1 Redirect 301 /was.php http://www.site.ru/new.php

При этом, новый адрес указывать необходимо полностью с http и доменным именем.

RewriteRule ^dir /dir-new/$1

Скажем, адрес страницы имеет вид: http://www.site.ru/dir/index.php?IBLOCK_ID=1&SECTION_ID=111 , тогда для настройки 301 переадресации на новый адрес, необходимо использовать следующее правило:

RewriteCond %{QUERY_STRING} ^IBLOCK_ID=1&SECTION_ID=111$ RewriteRule ^dir/index\.php$ /new/sef/?

Если один (или несколько) из GET параметров не задан(ы) или может иметь произвольное значение (в нашем примере это SECTION_ID), можно использовать следующий код:

RewriteCond %{QUERY_STRING} ^IBLOCK_ID=1&SECTION_ID=(.*)$ RewriteRule ^dir/index\.php$ /new/sef/?

Если требуется настроить переадресацию только для адреса http://www.site.ru/dir/ , но при этом чтобы страница http://www.site.ru/dir/index.php?IBLOCK_ID=1 открывалась по старому адресу, необходимо использовать спецсимвол $ в правиле.

RewriteRule ^dir/$ http://www.site.ru/new-dir/

Для доменов в зоне РФ действуют все те же правила, но только все кириллические символы необходимо заменить на альтернативный код (он на латинице). В частности, сама зона.рф преобразуется в.xn--p1ai .

RewriteCond %{HTTP_HOST} ^old-site\.ru$ RewriteRule ^(.*)$ http://www.site.ru/$1

И для домена в зоне РФ:

RewriteCond %{HTTP_HOST} ^xn-...\.xn--p1ai$ RewriteRule ^(.*)$ http://www.site.ru/$1 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !\..{1,10}$ RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*)$ http://www.site.ru/$1/ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^(.+)/$ RewriteRule ^(.+)/$ http://www.site.ru/$1 RewriteCond %{HTTP_HOST} ^si-te\.ru$ RewriteRule ^(.*)$ http://www.site.ru/si-te/ RewriteRule ^bitrix/ /bitrix/admin/ RewriteRule ^(.*)$ http://www.newsite.ru/new/ RewriteRule ^dir(.*)$ /new-file.php RewriteRule ^dir/no-file.html /no-file-new.html RewriteRule ^dir(.*)$ /all.php RedirectMatch 301 (.*)\.html$ http://www.new-site.ru$1.php

Указывается порядок загрузки типов индексного файла, лежащих в корне каталога.

DirectoryIndex index.html index.php index.htm index.shtml RewriteCond %{THE_REQUEST} ^{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://www.site.ru/ RewriteCond %{HTTP_HOST} ^test.site.ru$ RewriteRule ^(.*)$ http://site.ru%{REQUEST_URI} RewriteRule [^abc]/unique-file.html /unique-file.html

Код позволяет поставить 301-редирект со всех папок вида http://site.ruuniqe-file.html на один файл в корне /unique-file.html . Бывает полезен при переделке сайта и изменении ссылок.

RewriteRule ^testovyi/test/?$ /studio/news/detail.php?ID=230354&PAGEN_2=11

Код позволяет создать копию страницы с относительным адресом /studio/news/detail.php?ID=230354&PAGEN_2=11 по адресу /testovyi/test/

Внимание, важно, чтобы код ответа сервера для 404 ошибки, был именно 404. Путь к файлу указывается с помощью следующей строчки:

ErrorDocument 404 /404-for-me.php RewriteCond %{HTTP_HOST} ^(+)\.site\.com$ RewriteRule ^(.*) http://site.com/$1 RewriteCond %{HTTP_HOST} ^(+)\.site\.com$ RewriteCond %{HTTP_HOST} !=one.site.com RewriteRule ^(.*) http://site.com/$1

Все правила выполняются в прямом порядке их следования в файле.htaccess и правило, написанное позже, и будет выполняться позже.

Для сайтов, на которых используется не сервер Apache, аналогичные 301 редиректы легко настраиваются с помощью PHP :

Оптимально настраивать все редиректы сразу на конечную страницу (без промежуточных перенаправлений, в один шаг) это улучшает их восприятие со стороны поисковых систем и пользователей.

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)

RewriteRule (.*) http://mobile.site.ru/

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)

RewriteRule (.*) http://no-search.site.ru/

Переадресация с www.site.ru/component/content/?view=featured на www.site.ru/

RewriteCond %{QUERY_STRING} ^view=featured$ RewriteRule ^component/content/?$ /?

RewriteCond %{QUERY_STRING} ^idc=4&marea=6$ RewriteRule ^index\.php$ /? . - Точка заменяет произвольный символ. - обозначает перечень символов, совпадающих с буквами a, b, или с. [^abc] - перечень символов, которые не входят в указанных диапазон. Совпадёт с любым символом, кроме a, b, или с. * - означает, что предшествующий символ может повторяться (0 или более раз). * - команда найдёт идущие подряд символы из заданного набора. [^abc]* - с точностью до наоборот. .* - заменяет абсолютно любой набор символов. ".*" - найдёт все подстроки между кавычками. ^ - начало строки (в том случае, если используется в начале выражения). $ - обозначает конец строки. \w - буква, цифра или подчёркивание _. \d - заменяет любую цифру. \D - заменяет любой символ, но не цифру. - заменяет любую цифру. - любая буква от a до z (весь латинский набор символов) в нижнем регистре. - любая буква от A до Z в ВЕРХНЕМ регистре. - любая буква от a до Z в любом регистре. - то же самое. RewriteRule (.*) $1?

Располагать после: RewriteBase /

Памятка по используемым символам и обозначениям Строчка RewriteCond - условие выполнения правила RewriteRule . Если условие выполняется, то срабатывает редирект. Правила могут задаваться с помощью регулярных выражений.
Спецсимволы, используемые в правилах и их значения.

^ - спецсимвол начала строки;
$ - спецсимвол конца строки;
! - спецсимвол отрицания;
. - точка, заменяет любой символ, но только один;
() - группировка;
\ - «экранирующий» слеш, следующий символ после него считается обычным, а не спецсимволом.

Модификаторы используются после обычных, спецсимволов или их групп и позволяют расширить возможности шаблонов для срабатывания правил.

Символ повторяется 0 или 1 раз.
+ - повторяется от 1 до 65536 раз.
* - повторяется от 0 до 65536 раз.

Флаги, задают доп. опции для используемого правила. Перечисляются в квадратных скобках через запятую, скажем или .

NC - флаг NoCase, отключающий проверку регистра символов при срабатывании правила.
R - флаг Redirect, производит процесс остановки изменения URL -адреса и возвращает результат. Чаще всего используется значение R=301, но возможны и другие для временных перенаправлений (302, MOVED TEMPORARY ).
L - флаг Last, останавливает формирования URL -адреса и строка считается окончательной.

  • Redirect 301 – теория и практика редиректа, настройка и правила использования

UPD :

RewriteCond %{SERVER_PORT} !^443$ RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI}

RewriteCond %{SERVER_PORT} ^443$ RewriteCond %{HTTPS} =on RewriteRule ^(.*)$ http://your_site.com/$1

Про 301 редирект уже, наверное, сказано и пересказано множество раз в блогах, форумах и т.п. Но, как оказывается, не до всех эта информация вовремя доходит (тут я как бы намекаю на себя:). За более чем 3 года в сети я слышал про 301 редирект множество раз, иногда даже собирался его «попробовать», но давайте посмотрим фактам в лицо — так этого и не сделал. А зря! Все началось достаточно прозаически — у меня есть один сайт, который постоянно «колбасит» в плане индексации поисковиками. Вроде и ссылки там есть, и контент нормальный, а он все ни в какую не хочет стабильно работать. У меня уже почти закончились варианты подобного поведения, но тут я вспомнил про основы основ SEO и вообще продвижения — 301 редирект.

Беглый опрос в твиттере показал, что реально я чуть ли не один «забиваю» на этот важный момент. Большинство единогласно ответило, что в обязательном порядке устанавливает 301 редирект сразу при создании сайта. Более того, тут мне недавно попросили по разработке сайта добавить этот же самый 301 редирект для них, поскольку просьба пришла от продвигающей и конторы. Учитывая все эти моменты и «намеки судьбы» я понял 301 редиректу быть!

Зачем вообще нужен 301 редирект ? — спросите вы — есть несколько ситуаций в которых его можно применить:

  • Для склейки домена с www и без www. При этом показатели и ссылочный вес будет совмещаться, а то иногда бывает, что для домена с и без www они могут отличаться.
  • При смене домена со старого на новый 301 редирект позволит опять же сохранить показатели и ссылочное (насчет тИЦ не знаю, но PR точно).
  • При переносе страницы на сайте чтобы поисковики и посетители попадали на новую страницу вместо старой неработающей.
  • Если есть пиаристые домены со ссылками, которые по каким-то причинам вами не используются, возможно, просто некогда, то теоретически можно использовать 301 редирект на другие свои сайты. Хотя это метод такой — дополнительная возможность что ли, основные все же первые три.
  • Вообще 301 редирект нужен как для пользователей, так и для поисковых роботов — позволяет сориентировать тех и других, что есть новый сайт, домен, страница и без лишних вопросов переадресовывает их туда. Кроме того 301 редирект произведет склейку показателей сайтов и позволит не потерять позиции в поисковых системах.

    Как сделать 301 редирект

    Решений для этой задачи есть множество, все зависит от того какими техническими средствами обладает ваш хостинг. Также в интернете есть много статей по 301 редиректу, которые можно почитать, я приведу лишь несколько, на мой взгляд, самых типичных ситуаций.

    Простой редирект

    Производится в файле.htaccess или httpd.conf для Apache. Самый простой вариант простого 301 редиректа для переадресации на новый домен выглядит следующим образом:

    Redirect 301 /site1/page1.htm http://www.site2.com/page2.htm

    Вот еще парочка примеров простого 301 редиректа:

    Redirect permanent /test http://www.test.com/ Redirect permanent / http://enter.test.com/

    Здесь при попадании пользователя или робота в директорию test он перенаправится на www.test.com, все остальные попадут на enter.test.com. Для этого 301 редиректа на хостинге должны быть включены модули mod_alias (для поддержки Redirect, RedirectPermanent и RedirectMatch).

    301 редирект с помощью mod_rewrite в.htaccess

    С модулем mod_rewrite вы сталкивались достаточно часто даже не подозревая этого. В частности речь идет про постоянные ссылки (permalinks) как полезный инструмент в seo оптимизации wordpress. Если в админке настроите эти самые ссылки и после этого зайдете в файл.htaccess, то обнаружите там целый ряд правил для переадресации через директиву RewriteRule. Кроме того нужно проверить чтобы была подключена опция FollowSymLinks.

    Перенаправление домена с www на без-www

    Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^www.domain\.com$ RewriteRule ^(.*)$ http://domain.com/$1

    Редирект запросов без-www на домен с www префиксом

    Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} !^www\.(.*) RewriteRule ^(.*)$ http://www.%1/$1

    Вообще использование www в названии сайта само по себе устарело, но иногда до сих пор встречается. Если вы создаете новый сайт, то конечно сразу указываете везде без www, но если получили «готовый продукт», то нужно смотреть как домен отображается в выдаче Google и Яндекс — такой редитект и оставляете дабы ничего кардинально не менять.

    301 редирект старого домена на новый:

    RewriteEngine on RewriteBase / RewriteRule ^rewrite\.htm$ rewrite.html

    Для замены всех.htm файлов.html файлами:

    HTTP/1.1 301 Moved Permanently Location: http://www.newdomain.ru/newdir/newpage.htm

    Для этого, например, в PHP используем:

    Данный код лучше всего вставлять в начало PHP скрипта чтобы до него ничего не выводилось (echo или print). За пояснение спасибо автору этой статьи где также найдете информацию про установку редиректа на ASP, ColdFusion и т.п., просто с php самый популярный вариант.

    Примечания по 301 редиректу

    Напоследок пару моментов по 301 редиректу, которые нужно помнить и с которым я так или иначе столкнулся:

    • Во-первых, последовательность правил редиректа учитывается. Так что если какое-то правило не выполняется, проверьте нет ли других редиректов и не мешают ли они.
    • Во-вторых, помнить синтаксис и все особенности 301 редиректа достаточно сложно, поэтому иногда здорово помогает логика и перебор некоторых вариантов:) Хотя, конечно, лучше читать официальную документацию.
    • В-третьих, после внедрения 301 редиректа обязательно проверьте правила на работоспособность, зайдите не только на главную, но и пройдитесь по разделам, страницам сайта дабы потом не было проблем с этим.

    Если у вас есть что добавить по 301 редиректу — пишите:)

    P.S. Постовой. В наше время каждый день появляется множество интересных интернет проектов. Хотите знать все про стартапы тогда читайте новый увлекательный блог StartupWay.
    После аудита и оптимизации веб-проекта следует комплексная раскрутка сайтов в поисковых системах Google и Яндекс.

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

    Собственно, давайте разбираться в вариантах сделать редирект (переадресацию) правильно.

    Простой 301 редирект в.htaccess

    Если ваш сервер (или хостинг) использует apache, переадресацию можно выполнить, через файл. htaccess. Этот способ, по-моему, самый простой и удобный из всех мною виденных. Важно! Не забудьте включить модули mod_alias (для поддержки правил Redirect, RedirectPermanent и RedirectMatch) и mod_rewrite в php.ini.

    1. Простая переадресация со старых страниц на новые: Redirect 301 /old/ http:// domain.com/new/ или Redirect permanent /old/ http:// domain.com/new/

    Единственным минусом является потребность вносить все изменения вручную, то есть каждый адрес прописывается непосредственно программистом.

    2. 301 редирект в.htaccess для русскоязычных ссылок

    Единственная разница, которая заняла у меня кучу времени, это потребность в точности сохранения документа в формате uft-8 без БОМ , что является очень важным моментом. Если вы сохраните в другом формате, вероятнее всего ваше перенаправление работать не будет.

    В остальном все также:

    3. Редирект с помощью RedirectMatch

    Похожий способ редиректа, который описан выше за исключением того, что в этом случае можно указывать перенаправление, если вы перевели сайт с движка на php на aspx.

    RedirectMatch /(.*).php$ /$1.aspx

    4. Перенаправление домена с www на не-www
    Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^www.(.*) RewriteRule ^(.*)$ http://%1/$1

    еще вариант в более простом виде:

    Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^www.domain.com$ RewriteRule ^(.*)$ http://domain.com/$1

    5. Редирект запросов без www на с-www Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^domain.com$ RewriteRule ^(.*)$ https://domain.com/$1

    так же решает аналогичную задачу:

    RewriteEngine On RewriteCond %{HTTP_HOST} !^www.(.*) RewriteRule ^(.*)$ https://%1/$1

    6. Редирект ссылок со слешем на без для всего сайта RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteRule ^(.*)\/$ /$1 7. 301 редирект как в пункте 6, только наоборот RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteRule ^(.*[^\/])$ /$1/ 8. Убираем слэш в конце главной ссылки если она без www RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1/ RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://%1/$1/ 9. Убираем слэш в конце главное ссылки, если она с www RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://www.%1/$1/ RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1/ RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1 10. Убираем с помощью правильного перенаправления /index.php (без GET) RewriteCond %{REQUEST_URI} /index.php RewriteCond %{QUERY_STRING} ^\z RewriteRule ^(.*)$ http://site.ru/? 11. 301 редирект для всех адресов где есть index.php RewriteCond %{REQUEST_URI} /index.php RewriteRule ^(.*)$ http://site.ru/ 12. Делаем переадресацию с динамического url на статический

    вариант с GET

    RewriteCond %{QUERY_STRING} ^id=229 RewriteRule ^.*$ /supermodel/?

    вариант без GET

    RewriteCond %{REQUEST_URI} /test/ RewriteCond %{QUERY_STRING} ^id=229 RewriteRule ^.*$ /supermodel/?

    13. Делаем переадресацию всех страниц домена на один url другого домена RewriteCond %{REQUEST_URI} (.*) RewriteRule ^(.*)$ http://site.ru/ 14. Редиректы для SSL (перенаправление с http на https и наоборот)

    Подробнее об этом я написал , которую, в свете я предлагаю изучить.

    RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

    Редирект с помощью скриптов

    Очень многие осуществляют редирект с помощью скриптов. Небольшая подборка для разнообразия.

    HTTP/1.1 301 Moved Permanently Location: https://new.com/new-k/new.htm PHP редирект

    15. ASP редиректы

    17. ASP.NET редирект
    private void Page_Load(object sender, System.EventArgs e) { Response.Status = “301 Moved Permanently”; Response.AddHeader(“Location”,“https://new.com”); } 18. ColdFusion редирект
    19. JSP (Java) редирект
    20. CGI PERL
    $q = new CGI; print $q->redirect(“https://new.com/”); Ruby on Rails def old_action headers[“Status”] = “301 Moved Permanently” redirect_to “https://new.com/”

    Также существуют разные рекомендации от поисковых систем, для реализации 301 редиректа. Я рекомендую использовать рекомендации Google, в которых очень подробно изложены рекомендации о том, как правильно настроить 301 редирект .

    Для размещения 301 переадресации на серверах Apache, достаточно изменить, как описано выше файл.htaccess. Если вы не понимаете, как это работает и незадачливые символы в описании выше для вас большая загадка — обратитесь к хостинг-провайдеру или напишите вопрос в комментария.

    Как сделать 301 редирект (переадресацию) в WordPress с помощью плагина

    Очень многие используют одну из самых популярных CMS WordPress. По разным причинам нам может понадобиться сделать редирект внутри сайта. Например, эта необходимость возникла у меня при переносе сайта на новый домен.

    Самым оптимальным решением оказался плагин для WordPress, который решил все мои задачи. Минусом этого плагина была только ручное формирование списка ссылок для редиректа.

    В целом плагин для WordPress вполне меня устраивает и по сей день.

    Рассмотрим некоторые пояснения связанные с 310 редиректом

    301 редирект или ошибка сервера-301, является ответом, указанным в HTTP заголовке и говорит о том, что старый адрес имеет новый путь на постоянной основе.

    ** 303-я ошибка указывает на временный путь переадресации.

    Редирект - это перенаправление посетителя с одного сайта на другой автоматическим путем. Словом, пользователь оказывается совсем не на той странице, адрес которой он набирал в строке поиска.

    Редирект выполняется с использованием скрипта, который и осуществляет перенаправление. Выполняемый трюк полезен владельцам тех сайтов, которые хотят приобрести более благозвучное название домена.

    К примеру, смена адреса интернет-магазина ведет за собой большие потери, потому что часть посетителей будет потеряна. В данном случае скрипт решает эту задачу: пользователи также набирают прежний, знакомый им адрес, но переправляются на новую страницу. Редирект поможет в случае, когда происходит скрещивание нескольких доменных имен. Адрес сайта могут набирать, указав www или просто быстро набрав основное название, но именно при помощи скрипта попадают на одну и ту же страницу.

    Функция редиректа полезна не только в качестве сохранения хорошей посещаемости интернет-магазинов. Продвижение сайта стоило владельцам немалых усилий, поэтому логично, что они стремятся сохранить позиции. Для создания более успешного предприятия в рамках интернет-магазина можно склеить несколько сайтов. Для этого применяют редирект. Данный способ реализации функции редиректа, с одной стороны, является очень быстрым и надежным, с другой - поисковые системы относятся к склеенным сайтам с подозрением.

    Почему так происходит?

    Дело в том, что поисковые сайты являются машинами, которым необходимо четко проиндексировать все ресурсы. Склеенные сайты затрудняют эффективность быстрой индексации, что, в свою очередь, снижает отлаженность их работы.

    Наиболее опасны в этом контексте сайты, которые индексируются роботами, при этом направляя пользователя на тот ресурс, с которого происходит редирект. Но поисковые системы не всегда однозначно негативно воспринимают скрепленные сайты. Речь о функции 301-редирект.

    Редирект-301 является услугой на уровне сервера. Он составляет исключение среди других аналогичных функций, поскольку практически все поисковые системы воспринимают его дружественно. В частности, крупнейший поисковый ресурс Google, который используют чаще всего, благосклонно перенаправляет услугой редиректа 301 на нужную страницу.

    Причина успешного взаимодействия редиректа-301 с поисковыми ресурсами в том, что он коренным образом отличается от аналогичных услуг по оптимизации. Он составлен таким образом, что функционирует понятно для робота, коим является поисковая система. Редирект перенаправляет на нужный URL страницы однократно и окончательно.

    Влияние 301-го редиректа на seo продвижение

    1. При 301 редиректе происходит склейка адресов. Роботы поисковых систем и пользователи, открывающие сайт в браузере, перенаправляются на новую страницу с новым адресом, автоматически.

    2. При склейке адресов, новый url получает полный вес страницы, ссылочную массу и такие значения, как ТИЦ.
    Подобный редирект — это наилучшее решение при переносе сайта на новую систему управления контента, если вы не хотите потерять позиции и рейтинг сайта. Мой seo-блог использует несколько видов 301 редиректа для перенаправления.

    На этом все. Надеюсь, эта статья была полезна для вас. Если вы знаете свои собственные методы настройки редиректа, буду рад почитать о них в комментариях.

    301 редирект используется в первую очередь, когда страница или группа страниц сменила свой адрес. Такое происходит в тех случаях, когда изменяется структура сайта, при смене образующей URL-страницы и т.д. Об этом многие владельцы сайтов не задумываются и поэтому возникают дубли страниц, что может привести к потере позиций либо наложению .

    Помимо этого редирект 301 применяют для склейки зеркал (например, домен с www и без www). Это может способствовать повышению параметров тИЦ и PR, так как для поисковиков адрес сайта с "www" и без "www" - разные URL. Если владелец решил изменить адрес проекта в связи с изменением товаров и услуг, предоставляемых ранее, или решил зарегистрировать более короткий и красивый домен,- то здесь очень важно, чтобы посетители при обращении к адресу старого домена попадали на ту же страницу, что и ранее, но только уже расположенную на новом домене.

    Redirect 301 в.htaccess

    301 редирект в htaccess - это самый простой и популярный способ установки редиректов. Из преимуществ этого метода можно отметить тот факт, что он срабатывает на сервере до запуска различных скриптов ресурса и не создает дополнительную нагрузку. Вот несколько самых распространенных примеров (замените "сайт" на адрес вашего сайта):

    301 редирект в.htaccess для домена с www. на домен без www.

    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www\.raskruty\.ru$
    RewriteRule ^(.*)$ http://сайт/$1

    Обратный редирект с домена без www. на домен с www.

    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^raskruty\.ru$
    RewriteRule ^(.*)$ http://www.сайт/$1

    Редирект 301 адреса c /index.php на корень сайта /

    RewriteCond %{THE_REQUEST} ^{3,9}\ /index\.php\ HTTP/
    RewriteRule ^index\.php$ http://www.сайт/

    Еще один пример:

    RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /index\.php
    RewriteRule .* /

    Тоже самое можно проделать и для /index.html, просто замените в примере php на html.

    Редирект в nginx:

    301 редирект в nginx для домена с www. на домен без www.

    Server {
    server_name www.сайт;
    rewrite ^ http://сайт$request_uri? permanent;
    }
    server {
    server_name сайт;
    .... основной конфиг....
    }

    Еще пример (нежелательный):

    If ($host = "www.сайт") {
    rewrite ^/(.*)$ http://сайт/$1 permanent;
    }

    Редирект PHP:

    Редирект 301 часто используют как ответ сервера, заменяя этим действием традиционную ошибку 404 – Not Found. Если говорить проще, то посетитель при переходе по неправильной ссылке, либо на удаленную страницу, столкнется не с сообщением типа: «Извините, но такая страница удалена», а будет перенаправлен на другую действующую страницу. Хотя такой момент является спорным среди специалистов и поэтому тут присутствует несколько вариантов решений.

    Во-первых, существует две категории ошибок 404: первая – традиционная (классическая), когда страница действительно отсутствует, а вторая – когда такая ошибка возникает из-за «кривых» внешних ссылок. Поэтому в первом случает лучше оставить все как есть, т. е. «ошибку 404». Но во втором случае лучше позаботиться о редиректе на правильный URL-адрес, если присутствует возможность восстановить его из битой ссылки либо перенаправить пользователя на главную страницу.

    В том случае, когда нужно переработать большой проект или сложную структуру сайта, часто владелец сталкивается с множественными редиректами либо длинными цепочками. Такое означает, что редирект осуществляется не в один шаг, а в несколько – это отрицательная ситуация и ее необходимо избегать. Если поисковый бот перейдет по такой ссылке и получит несколько перенаправлений подряд, станет думать, что его хотят обмануть и прекратит свои действия, да и вообще перестанет индексировать такие ссылки.

    По возможности, нужно стремиться не допускать редиректов внутри ресурса. К примеру, если ссылки, ведущие с других ресурсов на сайт, исправить не удается и тут редирект обязателен, то битые внутренние ссылки необходимо исправлять. Хотя это может и не отразиться на ранжировании или индексации, но лучше подстраховаться и избежать таких спорных вопросов.

    При составлении в.htaccess правил редиректов нужно исключать реальные адреса файлов и директорий на сервере и следить за выборкой.