301 редирект с index (.html и .php) на корень сайта «/»

301 редирект в htaccess ➔ как настроить 301 и 302 редирект с www на без www, с http на https, со страниц index.php ➔ СтоКрат

3 Мая 2018

СОДЕРЖАНИЕ

Как настроить 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 на старом домене. Готовый текст файла:

User-agent: Yandex

Disallow:

Host: newsite.com

  • настраиваем 301 редирект для всех страниц сайта (кроме файла robots.txt) с помощью приведенного ниже кода:

RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC]

RewriteRule ^([^/]+) $1 [L]

RewriteCond %{HTTP_HOST} !^www.site.com

RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]

Всё!

301 редирект при смене адреса страницы

Постраничный редирект (когда меняется адрес страницы) осуществляется с помощью приведенного ниже кода:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www.stokrat.org$ [NC]

RewriteRule ^stranica/nastrojka-301-redirekta/$ https://www.stokrat.org/newpage/ [R=301,L]

Именно этот код используется при «переезде» страниц, например, на ЧПУ.

Настроить редирект с www на домен без www в htaccess

Упоминание www. в адресе домена уже давно не является актуальным. Тем не менее сайтов с www. полно. Склеивание доменов с www. и без должно производиться в строго обязательном порядке, т.к.

поисковые системы воспринимают эти 2 домена как 2 разных сайта с разными тИЦ, PR, посещаемостью, ссылочной массой и всем остальным. Следовательно, один из них – оригинал, а второй – «самозванец» с «ворованным контентом». Чтобы этого не происходило – домены с www.

и без необходимо «склеить» с помощью 301 редиректа. Код настройки приведен ниже.

Код редиректа с www на без www в htaccess выглядит так: 

RewriteEngine onRewriteCond %{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 версии страниц сайта.

Код для настройки приведен ниже.

RewriteCond %{SERVER_PORT} !^443$

RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]

А вот код на обратный редирект с https на http. Как видите, отличие всего в 1 символ:

RewriteCond %{SERVER_PORT} !^443$

RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

Редирект со страниц index.php, index.html

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

Поскольку в подзаголовке упомянуты index.php и index.html – Вы уже догадались, что с помощью 301 редиректа мы будем избавляться от дублей главной страницы:

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). Это плохо, поэтому также требуется настройка 301 редиректа с помощью приведенного ниже кода:

RewriteRule ^index.php/(.*)$ /$1 [R=301,L]

Нередки случаи, когда у главной страницы есть дубль вида

site.ru/main.html, для которого так же необходимо прописывать 301 переадресацию на site.ru:

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 HYPERLINK «http://site.ru/»  http://site.ru/

А вот теперь рассмотрим обратную ситуацию – когда Вы хотите склеить дубли, настроив переадресацию с site.ru на site.ru/main.html. Сделать это можно с помощью приведенного ниже кода.

RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|?)

RewriteRule .* %1.html [R=301,L]

RewriteRule ^(.*)/$ /$1.html [R=301,L]

Важно

Ну а если Вам важно, чтобы адреса всех внутренних страниц отображались без .html на конце, то redirect настраивается вот таким кодом:

RewriteCond %{REQUEST_URI} .html$

RewriteRule ^(.*).html$ /$1 [R,L]

Теперь о том как сделать редирект со страницы на страницу а именно с .htm на страницы .html. Для настройки такой переадресации достаточно добавить в .htaccess следующий код:

RewriteBase /

RewriteRule ^(.*).htm$ $1.html [R=301,L]

Редиректы с адресов со слэшами в конце и без них

Для начала рассмотрим еще один вид дублей страниц – страницы вида http://site.xyz/page и http://site.xyz/page/ — кроме слэша в конце, они ничем не отличаются. Настраивать redirect можно и с первой на вторую, и со второй на первую. Рассмотрим оба варианта:

Редирект с http://site.xyz/page на http://site.xyz/page/:

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !..+$

RewriteCond %{REQUEST_URI} !/$

RewriteRule (.*) http://www.site.ru/$1/ [R=301,L]

Redirect с http://site.xyz/page/ на http://site.xyz/page:

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_URI} ^(.+)/$

RewriteRule ^(.+)/$ /$1 [R=301,L]

Причем абсолютно не важно, будет ли у Вас после редиректа слэш в конце адреса или нет. Главное – чтоб эти адреса были склеены с помощью 301 редиректа.

Редирект на мобильную версию сайта

Разумеется, если Ваш сайт работает на движке WordPress или Joomla, то настроить редирект на мобильную версию сайта можно с помощью плагинов.

Источник: https://stokrat.org/blog/dolbim-didzhital/kak-nastroit-redirekty-na-sayte/

Настраиваем переадресацию (Redirect 301) для nginx, apache и php

Довольно важный момент при настройке сайта. Неправильно настроенный редирект может сильно повредить поисковой выдачи сайта. Самые распространённые ситуации, в которых приходиться использование Permanent Redirect 301:

  • Смена адреса сайта — вы купили свой домен и решили переехать с site.example.com на site.ru
  • Склейка зеркал — если ваш сайт доступен по адресу www.site.ru и site.ru, поисковые системы могут посчитать это как два разных сайта, поэтому для начала необходимо определиться с главным зеркалом (с www или без www) и настроить редиректы на основное зеркало.
  • Когда страница (одна или несколько) сменила свой адрес — в какой то момент стало понятно, что адреса http://example.com/index.php?option=com_content&task=view&id=23&Itemid=1 не есть хорошо, и нужно их переделать в http://example.com/sport/news12, но жалко терять позиции в индексе поисковых систем (поскольку для них это будет новая статья).
  • Еще один способ для борьбы с дублями страниц

Permanent Redirect 301 для apache (.htaccess)

Вставлять правила нужно сразу после строк:

RewriteEngine On RewriteBase /

сами правила задаются при помощи регулярных выражений, напомним синтаксис:

  • Метасимволы, для задания групп символов или «меток» в шаблоне:
    • ^ — метка начала строки,
    • $ — метка конца строки,
    • ! — отрицание,
    • — экранирующий слеш, позволяет считать следующий за ним метасимвол обычным символом,
    • . — точка, обозначает любой символ, но только один,
    • () — группировка.
  • Модификаторы, ставятся после обычных символов, метасимволов или их групп:
    • ? — символ повторяется 0 или 1 раз,
    • * — повторяется от 0 до 65536 раз,
    • + — повторяется от 1 до 65536 раз.
  • Флаги, определяют дополнительные опции для данного правила:
    • NC — (nocase) отключает проверку регистра символов.
    • R — (redirect) останавливает процесс преобразования и возвращает результат браузеру клиента как редирект на данную страницу (302, MOVED TEMPORARY).С данным флагом можно указать другой код результата, например R=301 возвратит редирект с кодом 301 (MOVED PERMANENTLY). Как вы понимаете, это то самое, что нам и надо.
    • L — (last) останавливает процесс преобразования, и текущая ссылка считается окончательной.

Рассмотри наиболее часто встречаемые ситуации:

Редирект с www.site.ru на site.ru

RewriteCond %{HTTP_HOST} ^www.(.*) [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Редирект для с site.ru на www.site.ru

RewriteCond %{HTTP_HOST} ^www.(.*) [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L]RewriteCond обозначаем условие, при совпадении с которым будет выполнено правило RewriteRule.

Редирект с index.php (html) на главную страницу

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.(php|html|htm) HTTP/ RewriteRule ^(.*)index.(php|html|htm)$ $1 [R=301,L]

Смотрите также более подробно статью: Как сделать редирект на php.

Редирект при смене структуры сайта

RewriteRule ^post/category/(.*)$ blog/category/$1 [R=301,L] RewriteRule ^post/(.*)$ blog/post/$1 [R=301,L]

Читайте также:  Облачный майнинг без вложений

Permanent Redirect 301 на PHP

Чтобы сообщить браузеру о том, что с запрошенной им страницы нужно произвести редирект на адрес http://site.ru выполните команды:

header(«HTTP/1.1 301 Moved Permanently»); header(«Location: http://site.ru»); exit();

Permanent Redirect 301 для nginx

Правила редиректа описывается в секции server.

Редирект с www.site.ru на site.ru

server { listen 80; server_name www.site.ru; rewrite ^ http://site.ru$request_uri? permanent; }

или общее правило для всех сайтов:

server { server_name ~^(?! www.); rewrite ^ http://www.$host$request_uri permanent; }

Редирект для с site.ru на www.site.ru

server { listen 80; server_name site.ru; rewrite ^ http://www.site.ru$request_uri? permanent; }

Редирект с index.php на главную страницу

location = /index.php { if ($request_uri = /index.php) { rewrite ^ http://$host? permanent;#301 redirect } fastcgi_pass unix:/tmp/fastcgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }

Источник: http://itzx.ru/other/howto-redirect-301

Настройка htaccess для SEO: 301 редирект, склейка зеркал

Главная / Внутренняя оптимизация / Настройка htaccess для SEO: 301 редирект, склейка зеркал

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

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

Это поможет мне структурировать собственные знания, а вам — запомнить, как правильно настраивать htaccess.

Базовая настройка htaccess

Хочу напомнить, что перед тем, как вносить как вносить правки в htaccess, необходимо создать резервную копию файла. Это касается и редактирования других файлов. Кроме этого, в хтаксесс должна быть включена функция перенаправления:

Добавлю, что для некоторых CMS, например, Joomla, необходимо включить перенаправление в админке сайта. В Joomla 2.5 данная настройка находится в «Сайт — Общие настройки — Сайт». Сами настройки должны выглядеть так:

Склейка зеркал сайта с www и без

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

Существует два варианта. В первом, предположим, что адрес вашего сайта должен выглядеть как site.com. В таком случае, зеркало www.site.com необходимо перенаправить на site.com:

RewriteCond %{HTTP_HOST} ^www.site.com$ [NC]RewriteRule ^(.*)$ http://site.com/$1 [R=301,L]

Второй вариант — ваш сайт должен иметь такой вид: www.site.com. Для этого в настройках htaccess необходимо прописать следующее правило:

RewriteCond %{HTTP_HOST} ^site.com$ [NC]RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]

Убираем index.php и index.html из адреса сайта

Ваш сайт может быть доступным по адресу site.com/index.php. Проблема решается очень просто, для этого вам необходимо прописать в htaccess такую конструкцию:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/RewriteRule ^index.php$ http://site.com/ [R=301,L]

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

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

Так что после правок в файле всегда проверяйте работоспособность функционала сайта.

Совет

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

if($_SERVER['REQUEST_URI'] == «/index.php») {header(«Location: /»,TRUE,301);

Иногда бывает, что сайт доступен по адресу site.com/index.html. Это может произойти, если ваш сайт создан на HTM, впрочем, на некоторых CMS такое встречал тоже. В любом случае, это дубль сайта, убрать его можно при помощи директивы сложного перенаправления:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.html HTTP/RewriteRule ^index.html$ http://site.com/ [R=301,L]

Редирект 301 для страниц со слешем и без

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

RewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_URI} ^(.+)/$RewriteRule ^(.+)/$ /$1 [R=301,L]

И наоборот, для добавления «/» в конце URL, добавьте следующий код:

RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_URI} !(.*)/$RewriteRule ^(.*[^/])$ $1/ [L,R=301]

Перенаправление со старого на новый домен

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

RewriteCond %{HTTP_HOST} ^www.oldsite.com$ [NC]RewriteRule ^(.*)$ http://newsite.com/$1 [L,R=301]RewriteCond %{HTTP_HOST} ^oldsite.com$ [NC]RewriteRule ^(.*)$ http://newsite.com/$1 [L,R=301]

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

Директивы простого перенаправления (Redirect 301)

Кроме специфических ситуаций, бывает, когда надо всего лишь перенаправить старую страницу, которая отдает 404, на рабочую новую. Для этого можно использовать так называемые директивы простого перенаправления. Вот пример использования. Допустим, надо перенаправить страницу site.com/page-old на site.com/page-new. Это можно сделать при помощи одной из директив ниже.

Redirect 301 /page-old http://site.com/page-new

или

Redirect permanent /page-old http://site.com/page-new

Вот и все, что я хотел сегодня рассказать. Настройка htaccess для SEO — один из первых шагов, которые необходимо сделать после создания сайта. Если настройку не произвести — в индекс поисковых систем попадет немало дублей, что не добавит авторитета интернет-ресурсу. Поэтому поработайте сначала над внутренними SEO факторами.

Проблемы с продвижением? Нет посетителей? Поможет комплексный SEO аудит

Источник: https://sky-fi.info/vnutrennyaya-optimizaciya/nastrojka-htaccess-dlya-seo.html

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

Редирект 301 — зачем он нужен? В процессе продвижения сайта может возникнуть ситуация, когда необходимо изменить url страницы. Причины тому могут быть разные: переезд на новый домен, склейка дублей страниц, или даже, не к ночи будут помянуты, санкции поисковых систем. Чтобы изменить url, используется перенаправление, правильно называющееся «301 Permanent Redirect».

Что такое 301 редирект?

301 redirect действует на постоянной основе, передает со старой страницы на новую ссылочный вес, ТИЦ сайта и PR.

Также, если сайт находится в каталоге Яндекс или DMOZ, страниц нового сайта в нем, разумеется, не будет. Помимо этого, используется 301 редирект на другой сайт, и перенаправление с одной версии сайта на другую.

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

Избавление от дублей страниц также называют канонизацией.

Как настроить 301 редирект

При использовании некоторых CMS (систем управления контентом, или «движков» сайта) редирект можно настроить при помощи специальных плагинов. Однако более распространена практика настройки 301 редиректа посредством внесения изменений в файл .htaссess.

Несколько примеров использования 301 редиректа

Cклеивания зеркал сайта

Для поисковой системы modx-gu.ru и www.modx-gu.ru – разные сайты. Один из них будет проиндексирован, второй же окажется дублем. Чтобы подобного не произошло, делают так называемое «склеивание» сайта. С сайта с «www» указывается перенаправление на сайт без «www». Это делается в файле .htaccess, с помощью следующей конструкции:

RewriteEngine On RewriteCond %{HTTP_HOST} ^www.your-site.ru$ [NC] RewriteRule ^(.*)$ http://your-site.ru/$1 [R=301,L]

Если на начальном этапе этого не было сделано, и в индекс попала версия сайта с «www», стоит сделать обратное перенаправление.

RewriteEngine On RewriteCond %{HTTP_HOST} ^your-site.ru$ [NC] RewriteRule ^(.*)$ http://www.your-site.ru/$1 [R=301,L]

Перенаправление на страницу с другим url

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

RewriteEngine On RewriteRule ^(.*)url.html$ http://your-site.ru/new-url.html [R=301,L]

Перенаправление на другой домен

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

RewriteEngine on RewriteCond %{HTTP_HOST} ^www.old-site.ru$ [NC] RewriteRule ^(.*)$ http://new-site.ru/$1 [L,R=301] RewriteCond %{HTTP_HOST} ^old-site.ru$ [NC] RewriteRule ^(.*)$ http://new-site.ru/$1 [L,R=301]

Редирект алиасов на основной домен сайта

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

RewriteEngine On RewriteCond %{HTTP_HOST} ^your-site.com$ [OR,NC] RewriteCond %{HTTP_HOST} ^www.your-site.com$ [NC] RewriteCond %{REQUEST_URI} !^/robots.* RewriteRule ^(.*)$ http://your-site.ru/$1 [R=301,L]

Убираем расширение с помощью 301 редиректа

Страницы, доступные по ссылкам с разными расширениями также признаются дублями. К примеру, есть страницы, с расширением .html и без него. Если вам нужно убрать его:

RewriteEngine on RewriteRule ^(([^/]+/)*[^.]+)$ /$1.html [L]

Перенаправление с index.php на главную

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

RewriteEngine On RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/ RewriteRule ^index.php$ http://your-site.ru/ [R=301,L]

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

RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^(.+)/$ RewriteRule ^(.+)/$ /$1 [R=301,L]

Редирект для url с параметрами

Если исходный адрес содержит какой-либо параметр (например, http://your-site.ru/articles.php?section=1. Параметр здесь «section=1» ), то перенаправляющая конструкция будет иметь следующий вид:

Источник: https://modx-gu.ru/configs/301-redirekt

301 редирект в SEO

Редирект 301 или 301 Permanent Redirect — это правило, которое автоматически переадресовывает пользователя на другой адрес страницы. С его помощью вы можете склеить старые страницы с новыми или перенести сайт на другой домен, убрать многие дубли с сайта и многое другое. Крайне полезная вещь — поэтому нужно научиться делать его правильно!

Так же при 301 редиректе происходит склейки тИЦ (читаем что такое тиц) и PR — т.е. вы можете сохранить старое значение на новом адресе. Вы можете нисколько не потерять в глазах поисковых систем. Давайте перейдем от теории к практике.Файл под названием .htaccess находится в главной категории вашего сайта.

Это служебный файл, в котором мы будем указывать правила склейки. Открываем файл блокнотом (рекомендую notepad++, чтобы не было проблем с кодировкой). Не забывайте, что это один из важных пунктов в работе SEO специалиста.

Теперь непосредственно займемся переадресацией и разберем конкретные примеры.

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

Чтобы настроить его вам нужно прописать в вашем файле следующий код, который будет перенаправлять посетителей с адреса site.ru/index.php на site.ru:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP
RewriteRule ^index.php$ http://site.ru/ [R=301,L]

Если вам так же нужно сделать переадресацию с index.html, то просто в коде выше замените.php на .html

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

Читайте также:  Как зарегистрироваться в webmoney

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC] RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

Это действие противоположное предыдущему, только основное зеркало здесь www.site.ru:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^site.ru$ [NC] RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

Это еще один вид дублей, тут мы склеим страницы site.ru/category/ и site.ru/category, как видите, в конце второго урла не стоит слэша:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]

Если вам нужно наоборот оставить слэш в конце урла, то вам нужен данный вариант:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]

Самый простой редирект со страницы на страницу, для это просто пропишите так:

Redirect 301 /old-post.html http://new-site.ru/new-post.html

Где old-post.html — это ваша старая страница, а new-site.ru/new-post.html — это новая страница и она может быть на любом домене (включая ваш текущий домен).

Этот пункт я выделил отдельно, т.к. он больше связан с переносом на другой домен. Тут есть важный момент, это не упустить директиву по правке роботса — она указана на 3 строке кода.

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC] RewriteRule ^([^/]+) $1 [L] RewriteCond %{HTTP_HOST} ^site.ru
RewriteRule ^(.*)$ http://new-site.ru/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^www.site.ru
RewriteRule ^(.*)$ http://new-site.ru/$1 [R=301,L]

Обратите внимание

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

Если у вас появились какие-то вопросы, пишите в комментарии — будем разбиратьс

Источник: http://internet-pages.blogspot.com/2015/12/301-seo.html

Перенаправления с помощью .htaccess, PHP, HTML и JavaScript

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

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

Редиректы выполняются с помощью .htaccess, PHP скрипт, HTML мета-тегов и JavaScript.

Перенаправление доменов сайта

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

Без таких переадресаций веб-мастера столкнулись бы со страницей ошибки 404 вместо искомого сайта. Это то, чего коммерческие ресурсы особенно стремятся избежать.

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

Это позволяет более эффективно управлять потоком посетителей, а также уменьшить показатель отказов.

Кроме этого перенаправление позволяет одинаковому контенту быть доступным по различным веб-адресам. Все альтернативные адреса перенаправляются в сторону приоритетного домена сайта:

Типы редиректов

Различают клиентские и серверные HTML meta redirect. В случае с серверными перенаправлениями происходит передача кодов состояния HTTP пользовательским агентам (браузерам и поисковым роботам).

Когда дело доходит до перенаправлений на стороне клиента, все выглядит по-другому: они выполняются без какого-либо ответа, и никакие коды состояний не передаются. Именно поэтому не все системы поддерживают редирект. Это может привести к ситуациям, когда посетители остаются на оригинальном сайте и не перенаправляются на новую страницу.

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

Серверные редиректы

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

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

  • redirect 301 HTML – перемещен навсегда: запрашиваемый ресурс теперь постоянно доступен по новому URL. Старый URL с этого момента становится недействительным;
  • 302 – перемещен временно: запрашиваемый ресурс доступен по новому URL. При этом исходный URL по-прежнему сохраняет свою актуальность.

Если код состояния HTTP не определен явно, сервер передает код состояния 302 во время редиректа.

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

В отличие от редиректа 301, код состояния 302 сообщает поисковым роботам, что первоначальный URL должен оставаться индексируемым. Предназначенный для постоянной работы адрес редиректа конкурирует с адресом, указанным в индексе поисковой системы.

Перенаправление через .htaccess

.htaccess представляет собой конфигурационный файл на сервере Apache, используемый для перезаписи центральной конфигурации на уровне каталогов. Этот файл позволяет администраторам сайта выполнять специфичные настройки каталога для доменов и их подкаталогов. Одна из функций файла .htaccess включает в себя серверные перенаправления отдельных адресов на другие URL.

После того, как файл .htaccess со следующим кодом помещается в основные каталоги, запросы на исходный домен перенаправляются серверной стороной на домен www.example.com ‘‘:

.htaccess перенаправление на новый домен redirect 301 / http://www.example.com/

Строка кода начинается с redirect 301 HTML и определяет код состояния HTTP, который будет передан сервером. Далее следует путь к контенту, который должен быть перенаправлен. В данном случае будет перенаправлено все содержимое. В заключении целевой URL перенаправляется на URL пользовательского агента: ‘http://www.example.com’.

Этот метод позволяет перенаправить отдельные файлы. Следующий код показывает редирект с одного сайта на другой:

.htaccess перенаправление из подкаталога на другой URL

Вот как выглядит постоянное перенаправление на сервере Apache с активным модулем mod_rewrite:

RewriteEngine On RewriteRule ^directory/example-document.html$ http://www.example.com/example.html [L,R=301]

В первой строке кода модуль mod_rewrite сервера Apache активируется с помощью команды ‘RewriteEngine On’. После этого указывается «RewriteRule» с путем к файлу перенаправления и адресом назначения. Символы ^ и $ обозначают начало и конец пути, а L означает последнее правило для соответствующего запроса. R = 301 пересылает статус HTTP 301.

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

Перенаправления с помощью PHP

HTML redirect на другую страницу может также быть выполнен PHP скриптом (например, в index.php). Следующий код отображает постоянное перенаправление к целевому URL ‘www.example.com’:

При передаче через PHP скрипт код состояния HTTP определяется с помощью функции «header» во второй строке кода. В этом примере должен быть выполнен постоянный 301 редирект. Учитывая, что серверные перенаправления обычно выполняются на временной основе, то для постоянного редиректа нужно явно указать код состояния 301. Адрес назначения перенаправления также прописан в ‘header‘.

В примере перенаправление происходит на ‘http://www.example.com‘. Функция ‘exit‘ в четвертой строке кода заканчивает сценарий и препятствует выполнению следующей строки. Чтобы редиректы работали через PHP скрипт, блок кода должен быть расположен в начале HTML страницы. Это препятствует передаче сервером содержимого HTML на страницу перенаправления.

Клиентские редиректы

Если выполнение перенаправления на стороне сервера невозможно по техническим причинам, то можно использовать клиентское решение. Для этого применяется HTML метатег «refresh» и JavaScript. Недостатком перенаправления на стороне клиента является то, что серверы не передают коды состояния HTTP запрашивающим браузерам или поисковым роботам.

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

Redirect HTML index на стороне клиента оказывают негативное влияние на поисковый индекс. С клиентскими редиректами 301 не происходит явного исключения из индексации через код состояния HTTP.

Важно

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

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

Переадресация с помощью HTML метатега refresh

HTML перенаправления реализуются через метатеги с атрибутом ‘http-equiv’. Для этого нужен простой HTML-файл и соответствующий тег в заголовке для создания перенаправления.

Чтобы посетители получали информацию о редиректе, в HTML-документе должно быть установлено соответствующее уведомление: «Пожалуйста, подождите. Вы будете перенаправлены … ‘.

Простое перенаправление с помощью refresh выглядит следующим образом:

Клиенту будет предложено перенаправление на новую страницу через метатег http-equiv = «refresh». То, как это происходит, определяется в атрибуте ‘content’. Приведенный выше пример перенаправляет пользователей на домен ‘www.example.com‘ через десять секунд.

Переадресация с помощью JavaScript

JavaScript предлагает простую возможность HTML redirect домена на стороне клиента. Но JavaScript поддерживается не всеми браузерами из-за соображений безопасности. Использование данного решения также может создать проблемы для поисковых роботов и пользователей с активными дополнениями NoScript. Вот как выглядит код перенаправления с помощью JavaScript:

Самое главное здесь это третья строка кода. Объект ‘window.location‘ используется, чтобы сделать ссылку на текущий адрес сайта. Команда ‘replace‘ инструктирует браузер направить пользователя к домену назначения (‘www.example.com‘).

Перевод статьи “Domain redirects via .htaccess, PHP, HTML, and JavaScript” был подготовлен дружной командой проекта Сайтостроение от А до Я.

Источник: https://www.internet-technologies.ru/articles/perenapravleniya-s-pomoschyu-htaccess-php-html-i-javascript.html

htaccess

Наглядные примеры .htaccess

В начало .htaccess ставят:

RewriteEngine On RewriteBase / Первая строка включает обработку правил, вторая — обрезает полный путь (от корня сервера) до корня сайта. /home/papka-s-saitom/public_html/razdel/podrazdel/ — таким был путь до RewriteBase /

/razdel/podrazdel/ — таким станет после

Благодаря «RewriteBase /» удобнее делать преобразования URI (убирается привязка к физическому расположению файлов сайта на сервере).

Самые распространенные примеры:

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

Для простого редиректа условия задавать не обязательно, только правило.

Реврайт без редиректа

Иногда требуется, чтобы был редирект без смены адреса, т.е. реврайт без редиректа. Для этого просто не указываем флаг редирект (R), и получаем желаемый результат, теперь по адресу news/happy получим news.html, а в адресной строке останется news/happy

Редирект с сохранением рейтинга страницы

Редирект для домена с www.site.com на site.com

Убираем у всех запросов вначале “WWW.”

Редирект для домена с site.com на www.site.com

Другой вариант

Редирект с index.php (html,htm) на главную страницу

Редирект с index.html на папку (удаление из строки браузера index.html)

Заменить все .htm файлы на .html файлы

Другой вариант

Чтобы вместо page.htm загружался файл page.html

Переезд с одного домена на другой

Читайте также:  Что такое интернет браузер

Редирект всех файлов в папке на один файл

Например вы больше не нуждаетесь в разделе сайта “old” и хотите перенаправить все запросы к папке /old на один файл /new.php. Для этого добавляем в .htaccess следующий код.

 Задание типа индексной страницы (php, html, htm и другие)

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

Проверяем доменное имя, если оно начинается с www, то сработает правило: “все, на http://%1/$1”. Здесь %1 это наш домен без www (взят из условия), а $1 это адрес (взят из самого правила).

 Убираем у всех запросов в конце index.php. Переадресуем на страницу без index.php

Поисковые системы плохо относятся к дубрям страниц. Чтобы этого избежать нужно удалить (склеить) страницы вида http://ваш_домен/ и http://ваш_домен/index.php

Вариант для битрикс :

Определение кодировки, в которой сервер “отдает” файлы

Варианты: KOI8-R, UTF-8, Windows-1251

 Определение кодировки на загружаемые файлы

Варианты: KOI8-R, UTF-8, Windows-1251

Кэширование для всех типов файлов по времени доступа

Кэширование для всех типов файлов по времени изменения

Кэширование для определённых типов файлов

Главная страница без дублирования

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

Но для поисковых систем это четыре разных URL! Если не настроить .htaccess верно, поисковик добавит в свой индекс четыре одинаковых страницы. Это признак некачественного сайта.

Избежать этой проблемы можно с помощью такого кода в .htaccess:

  Редирект страниц без слэша в конце URL на слеш

Совет

Чтобы предотвратить ситуацию с индексированием страниц www.site.com/about и www.site.com/about/ как разных, ставим следущий код: Со страниц без слэша будет установлен редирект на «слэшевые».

Другой вариант

 Принудительная постановка замыкающего слеша

Следующий код всегда будет добавлять слеш в адрес URL вашего сайта, что хорошо помогает в области SEO сайта.

Убираем повторяющиеся слеши

Удалить слеш в конце

Удаляем «category» из URL

Для изменения ссылки site.com/category/blue на site.com/blue, просто добавьте следующий код в конце вашего .htaccess файла.

Редирект URL страницы с папки в корень сайта

Например страница лежит на сервере в site.com/category/blue.html, но надо чтобы страница работала по запросу site.com/blue.html

Редирект от GET параметров

Например, нужно что бы со страницы /?action=page&id=15 был редирект на /page/15/

Редирект на мобильную версию сайта

Допустим, что мобильная версия расположена на поддомене m.site.com. Будем переходить на мобильную версию только с главной страницы основного домена.

Первой строкой мы проверяем USER_AGENT, определяем что он относится к мобильникам. (эту строку я детально не проверял, взял на просторе интернета, возможно она не совсем корректная, или есть более универсальная строка. Но на моих мобильных устройствах этот пример работает)

Второй строкой проверяем что мы находимся на нужном домене (т.к. пример не универсальный)

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

Редирект на мобильную версию сайта (Универсальная версия)

Обработка ошибок Apache

Сохранение (загрузка) файлов вместо открытия

Обратите внимание

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

Переадресация с www.site.com/index.php?idc=4&marea=6 на www.site.com/

Редирект с поддомена на основной домен второго уровня

Изменяем переменные php и передаём обработку другому скрипту.

В этом примере запрос вида: index.php?parameter=some
преобразуется в: parameter.php?some

Убираем переменные php из запроса

(вырезаем из URI всё, что находится после знака вопроса)

Заперт входа на сайт

Запрещаем вход на сайт Интернет Експлореру (вернее, кто себя так определяет) и пользователям с определённого IP-адреса (xxx.xxx.xxx.xxx).

Закрываем от всех

Закрываем конкретный файл от всех

Разрешаем доступ только с одного ip

Запрещаем доступ с конкретных ip

Убираем из Урла (URL) расширение файла

php можно заменить другим расширением. Например: html, htm, shtml, asp

При запросе файла .htaccess говорим, что он не существует (410, GONE).

Другой метод

Запрещаем отображать содержимое директории, если нет индексного файла

Вы скорее всего хоть раз видели текст Index of и список файлов. Так происходит в том случае, когда в директории нет индексного файла (например index.php), а система предлагает выбрать файл для дальнейшего открытия. Минус этого заключается в том, что случайный пользователь может увидеть список и содержание всех файлов директории.

Перенаправление с HTTPS на http

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

Когда нужно применять уловки типа содержания зависящего от времени масса вебмастеров все ещё используют CGI скрипты которые производят редиректы на специальные страницы. Как это может быть сделано через mod_rewrite?

Есть много переменных названных TIME_xxx для условий редиректа. В связке со специальными лексикографическими образцами для сравнения STRING и =STRING мы можем производить редиректы зависящие от времени:

Это выдает содержимое foo.day.html при запросе URL foo.html с 07:00 до 19:00 а в оставшееся время содержимое foo.night.html.

Редирект в URL с подчеркивания в дефис

Редирект в URL с больших символов на маленькие

Массовый редирект новых файлов

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

Далее пишем код который свяжет ваши старые id с новыми URL-ами
После этого, добавляем следующую строчку в .htaccess:

затем создаем PHP файл redirectold.php, который будет поддерживать 301 редирект:

Теперь все запросы к вашим старым URL-ам будут вызывать redirectold.php, который найдет новый URL и вернет 301 ответ с вашей новой ссылкой.

Красивый листинг каталогов

netbeans  регулярки  regex  gulp  skype  xamp  Htuekzhrb  прокрутка  dns  htaccess  time  ls  shortcode  Шорткоды  кеш  sass  redirect  Спящий  количество  node_modules  git  xampp  https  Перевод  htlbhtrns  редиректы  cron  testmeta  testcategory  cookie 

Источник: https://andxbes.ru/develop/htaccess/

301 редирект: популярные шаблоны

Версия для печати

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

Поскольку веб-сервер Apache является наиболее распространенным, то все шаблоны, приведенные в данной статье, относятся именно к нему, а конкретно — должны прописываться в корневом файле .htaccess. Перед использованием шаблонных 301 редиректов убедитесь в том, что в Apache подключен модуль mod_rewrite (файл httpd.conf).

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

Options +FollowSymLinks RewriteEngine On

RewriteBase /

Рассмотрим типичные правила перенаправлений.

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

Подобные перенаправления переадресуют все страницы сайта вида http://www.site.com.ua/page.html на страницы http://site.com.ua/page.html. Для такого типа редиректа можно использовать следующий шаблон:

RewriteCond %{HTTP_HOST} ^www.site.com.ua$ [NC]RewriteRule ^(.*)$ http://site.com.ua/$1 [R=301,L]

Или же упрощенный вариант:

RewriteCond %{HTTP_HOST} ^www.(.*) [NC]RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Важно

Этот 301 редирект со страниц домена вида http://site.com.ua/page.html на страницы http://www.site.com.ua/page.html делается подобным описанному выше методу, только меняется положение www:

RewriteCond %{HTTP_HOST} ^site.com.ua$ [NC]RewriteRule ^(.*)$ http://www.site.com.ua/$1 [R=301,L]

Или альтернативный упрощенный вариант:

RewriteCond %{HTTP_HOST} !^www.(.*) [NC]RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]

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

Склейка индексной страницы с корнем сайта

Такой тип редиректов часто доставляет проблемы в случае, если используется CMS, перенаправляющая все запросы к сайту на индексную страницу. Добавление директивы в .htaccess файл тогда приведет к циклу бесконечных перенаправлений. Самым простым выходом из ситуации будет вставка небольшого фрагмента кода в начало индексной страницы (например index.php):

if($_SERVER[‘REQUEST_URI’] == «/index.php») {

header(«Location: /»,TRUE,301);
exit();

}

Таким образом, при обращении к индексной странице сравнивается, если запрошенный адрес равен, к примеру, http://site.ua/index.php, то условие срабатывает и происходит переадресация на корень сайта http://site.ua/. Если сайт не перенаправляет все запросы на index.php можно воспользоваться следующим шаблоном для mod_rewrite:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/
RewriteRule ^index.php$ http://site.com.ua/ [R=301,L]

Такой же редирект может использоваться и для других расширений главной страницы, таких как index.html, или например index.phtml.

Редирект с поддомена на подпапку

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

Пусть, к примеру, есть страница с адресом http://eng.site.com.ua/page.html и нам нужно склеить ее с дублирующей страницей http://site.com.ua/eng/page.html. Используем для этого следующий шаблон (прописывается для .htaccess файла поддомена):

RewriteCond %{HTTP_HOST} ^www.eng.site.com.ua [OR] RewriteCond %{HTTP_HOST} ^eng.site.com.ua

RewriteRule ^(.*)$ http://www.site.com.ua/eng/$1 [L,R=301]

Редирект с подпапки домена на поддомен

Если необходимо наоборот, перенаправить пользователя с подпапки на поддомен, то используйте следующий шаблон:

RewriteCond %{HTTP_HOST} ^site.com.ua$ [NC]RewriteRule ^/eng/(.*)$ http://eng.site.com.ua/$1 [R=301,L]

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

RewriteRule ^(.*).html$ $1.php [R=301,L]

Совет

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

RewriteCond %{HTTP_HOST} ^oldsite.com.ua
RewriteRule ^(.*)$ http://newsite.com.ua/$1 [R=301,L]

Все страницы старого домена будут перенаправлены на соответствующие страницы нового.

301 Редирект динамических страниц

При модернизации динамического сайта и создании ЧПУ-адресов часто возникает необходимость перенаправить старые страницы с параметрами ID на новые с ЧПУ. Например, чтобы переадресовать страницу вида http://site.com.ua/page.php?id=13 на новую страницу http://site.com.ua/newname.html, используется следующая конструкция:

RewriteCond %{QUERY_STRING} ^id=13$
RewriteRule ^/page.php$ http://site.com.ua/newname.html [L,R=301]

Все описанные выше правила справедливы и для доменов написанных кириллицей. Однако, при создании перенаправлений кириллические домены лучше заменять так называемым Punycode. Для этого можно воспользоваться одним из онлайн-сервисов конвертации WhiteWhois.

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

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

Источник: http://www.optimization.com.ua/articles/popularnie-shabloni-redirektov.html

Ссылка на основную публикацию