Как сделать 301 редирект в файле .htaccess — подробные примеры
· Время на чтение: 13мин · Автор: · Опубликовано · ОбновленоДавайте рассмотрим основные правила переадресации распространенные на файл .htaccess. Примеры того, как сделать 301 редирект в файле .htaccess. Для чего вообще необходим редирект и его особенности. Влияние переадресации на конечную страницу и чем это будет полезно.
301 редирект (Permanent Redirect) — это одно из основных правил, которые необходимо прописывать в .htaccess. Основная задача 301—Redirecta, переадресация пользователя на прописанный в правиле адрес страницы.
Содержание статьи:
- Что такое Permanent Redirect и код состояния HTTP 301?
- Permanent Redirect в поисковом продвижении и SEO
- Основные правила использования перенаправления
- Как настроить редирект в файле .htaccess
- Редирект страниц сайта
- Основной синтаксис регулярных выражений для файла Apache / .htaccess
- Плагин Redirection для обладателей проектов на CMS WorPress
- Плагин Simple Redirects для WordPress
- SEO Redirection Plugin для WordPress
Что такое 301 Permanent Redirect и код состояния HTTP 301?
Permanent Redirect 301 — это стандартное обозначение того, что страница или ресурс перемещены на новое местоположение. Таким образом пользователь при посещении одной страницы, перенаправляется на адрес нового ее местонахождения.
Поисковый бот или прочие сторонние боты, получают соответствующий код ответа HTTP 301. Это означает, что страница или полноценный ресурс перемещены навсегда на новый адрес. Соответственно все основные свойства страницы переходят к конечной точке перенаправления. Указывая поисковым системам на необходимость пересмотра всех текущих входящий URL. Для последующего переноса веса на конечную страницу (ресурс).
301 постоянное перенаправление: это основной термин в SEO, который используется при стандартизации URL-адресов. Может быть, все знают этот термин, но поскольку он используется не очень часто, многие профессиональные оптимизаторы не очень хорошо знакомы с постоянным 301 редиректом.
Каков эффект использования 301 редиректа:
Постоянное перенаправление 301 — это метод перенаправления, который соответствует правилам поисковой системы среди всех методов перенаправления. К другим методам перенаправления относятся временное перенаправление 302, JS-переход и т. д. Эти методы могут привести к неправильным URL-адресам.
Поэтому, если у вас есть несколько доменных имен и вы хотите разрешить им посещать один и тот же веб-сайт, вы можете использовать только одно из них в качестве основного доменного имени, а оставшиеся другие доменные имена выполняют постоянное перенаправление 301 на это основное доменное имя. Если различные доменные имена посещают один сайт и повторного включения правильного редиректа не будет, это приведет к наказанию сайта.
301 Permanent Redirect в поисковом продвижении и Seo
Все поисковые системы в особенности основные Google и Яндекс полностью поддерживают использование редиректов. Это позволяет указать поисковому роботу, что несколько разных адресов нужно объединить в 1. При этом основным адресом будет только тот на который осуществляется перенаправление.
Для Seo это незаменимый дополнительный инструмент продвижения. К примеру позволяющий указать поисковой системе:
- На новый адрес сайта или новый домен. Для последующего переноса всех свойств старого адреса (домена) на новый домен.
- Перенаправление с доп. зеркал на основное. Например, когда ресурс доступен по адресам www и без www. Или использует (https), но при этом доступен и по http.
Основные правила использования перенаправления
- Во первых – необходимо размещать перенаправления в правиле в правильном порядке. Используйте наиболее частые перенаправления (выше), а наиболее глобальные ниже.
- Во вторых – избегайте многократного редиректа. Это крайне негативно скажется на Seo продвижении сайта. Поисковый бот или пользователь в этом случае, будет переадресован несколько раз. К примеру: с одной страницы, на 2—ю затем на 3—ю. Это плохо и некорректно с точки зрения Seo.
- В третьих – старайтесь не делать циклических переадресаций (друг на друга, по кругу). Это негативно скажется на распределение веса между страницами указанными в правиле.
- В четвертых – не забывайте, что большинство браузеров используют хеширование. Поэтому все редитекты, необходимо проверять на актуальность сторонними ресурсами.
Как настроить 301 редирект в файле .htaccess
Сам файл .htaccess располагается в главной директории сайта. Работа с ним ведется крайне осторожно, при любом изменении сохраняйте резервную копию. Одна ошибка в написании правила приведет к непредвиденной ошибке на сайте. Потом будет сложно установить причину банальной ошибки 500 (Internal Server Error). Само редактирование ведется с помощью любого текстового редактора, обязательно с поддержкой кодировки UTF -8 (формат преобразования Юникода).
Основная функция, которая указывает серверу на наличие правил перенаправления устанавливается первой.
Все последующие правила пишутся после нее:
Options +FollowSymLinks RewriteEngine On
Redirect 301 непосредственно относящийся к доменному имени и сайту в целом
К таким перенаправлениям можно отнести популярные редиректы:
- С WWW и обратно — для указания зеркала;
- Домена на домен или множества доменов на основной;
- С HTTPS на HTTP и обратно, для указания предпочтительной версии;
- Непосредственно полный перенос проекта на новый домен;
Это наиболее востребованные глобальные редиректы, которые относятся к доменному имени и сайту. Благодаря таким правилам все переходы и обозначения проходят плавно и безболезненно. Одна из самых востребованных для поискового продвижения. Распространенное перенаправление с домена www на без www. Необходимо для указания главного зеркала поисковым системам.
RewriteCond %{HTTP_HOST} ^www.site\.ru$ [NC] RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
Пример обратного перенаправления:
RewriteCond %{HTTP_HOST} ^site\.ru$ [NC] RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
Для тех, кто использует HTTPS:
RewriteCond %{SERVER_PORT} ^80$ [OR] RewriteCond %{HTTP} =on RewriteRule ^(.*)$ https://pixelplus.ru/$1 [R=301,L]
301 — редирект с домена на домен или на домен в зоне РФ.
Осуществляется перенаправление с одного доменного имени на другое.
RewriteCond %{HTTP_HOST} ^old-site\.ru$ [NC] RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
Для обладателей доменного имени в зоне РФ:
RewriteCond %{HTTP_HOST} ^xn-...\.xn--p1ai$ [NC] RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
Переход сайта на HTTPS для всех страниц сайта
Таким образом все существующие адреса проекта, будут направлены на новые с префиксом “https”.
RewriteCond %{SERVER_PORT} ^80$ [OR] RewriteCond %{HTTP} =on RewriteRule ^(.*)$ https://domain.ru/$1 [R=301,L]
Обратный переход на HTTP
Возможен если нужно перейти на http, хоть и редко используется.
RewriteCond %{HTTPS} "on" RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]
Редирект домена на адрес www с подкаталогом
RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} domain.com [NC] RewriteRule ^(.*)$ http://www.domain.com/directory/index.html [R=301,NC]
Редирект со старого домена на новый домен, который включает полный путь и строку запроса
Options +FollowSymLinks RewriteEngine On RewriteRule ^(.*) http://www.newdomain.com%{REQUEST_URI} [R=302,NC]
Редирект со старого домена с подкаталогом на новый домен без подкаталога, но с полным путем и строкой запроса
Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_URI} ^/subdirname/(.*)$ RewriteRule ^(.*) http://www.katcode.com/%1 [R=302,NC]
Полный переезд сайта на новый домен
Классная вещь, которая крайне необходима для переезда сайта на новый домен.
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]
Редирект со старого домена на новый домен, который включает полный путь и строку запроса
Options +FollowSymLinks RewriteEngine On RewriteRule ^(.*) http://www.newdomain.com%{REQUEST_URI} [R=302,NC]
Редирект со старого домена с подкаталогом на новый домен без подкаталога, но с полным путем и строкой запроса
Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_URI} ^/subdirname/(.*)$ RewriteRule ^(.*) http://www.katcode.com/%1 [R=302,NC]
Переадресация всего сайта или домена на новый
Redirect 301 / http://www.domain.com/
Редирект всего сайта в подпапку
Redirect 301 / http://www.domain.com/subfolder/
Перенаправить подпапку на другой веб-сайт
Redirect 301 /subfolder http://www.domain.com/
Перенаправить расширение файла, но сохранить имя страницы
RedirectMatch 301 (.*)\.html$ http://www.domain.com$1.php
301 редирект страниц сайта
Порой крайне необходимо осуществить подобную переадресацию. Причин этому может быть множество, особено это касается страниц с ошибкой 404. В большинстве случаев на подобные страницы ведут другие домены. Как мы все понимаем, они передают вес (ТИЦ, PR, ИКС, TRUST), который нам необходим.
Permanent Redirect — позволяет направить несуществующую страницу на необходимую с подобным материалом. Благодаря этому мы сохраним переданные свойства, а пс роботы обновят данные о входящих ссылках. Основным направлением таких правил является:
- Указание предпочтительной канонической страницы;
- Направление страницы со / (слезшем) на без него;
- Указание поисковым ботам на страницу 404;
- Предпочтительный раздел или каталог;
- Основной редирект – 301 с одной страницы (старой версии) на новую. Направляет робота или пользователя на новую версию страницы. Таким образом указываем каноническую версию страницы. Возможно указание желаемой для перенаправления.
Redirect 301 /old-post.html http://new-site.ru/new-post.html
Переадресация адресов без / на конце на адреса со / на конце
Помогает убрать нежелательные дубли страниц.
RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*[^/])$ $1/ [L,R=301]
Обратный редирект адресов у которых / в конце, на без него
Также помогает избежать дублей.
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^(.+)/$ RewriteRule ^(.+)/$ /$1 [R=301,L]
Перенаправление всех страниц одного домена на главную другого
Помогает для создания структуры из нескольких доменов (сайтов).
RewriteCond %{REQUEST_URI} (.*) RewriteRule ^(.*)$ http://site.ru/ [L,R=301]
Указываем через .htaccess, путь к файлу 404 ошибки
Крайне необходимая вещь для грамотного поискового продвижения.
ErrorDocument 404 /404-for-me.php
Переопределяем каталог или категорию сайта
Такое правило помогает избежать в пустую потраченного времени, на указание редиректов для отдельных адресов.
Вариант 1. RewriteRule ^(.*)/old-category/(.*)$ $1/new-category/$2 [R=301,L] Вариант 2. RewriteRule old-category /(.*) / old-category /$1 [R=301,L]
Перенаправление с поддомена блога в папку блога
Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_URI}/ blog RewriteRule ^(.*) http://www.nicola.top/%{REQUEST_URI} [R=302,NC] RewriteRule ^(.*) http://www.nicola.top/blog/%{REQUEST_URI} [R=302,NC]
Перенаправить один каталог в другой
Options +FollowSymLinks RewriteEngine On RewriteRule ^(.*)/old-directory/(.*)$ $1/new-directory/$2 [R,L]
Перенаправление одной папки
При перенаправлении одной папки в новое место вы должны использовать следующее:
RewriteRule ^/?folder/(.\*)$ /location/$1 [R,L]
В качестве примеров я использую «папку» и «местоположение». Замените имена папок и местоположений!
Удалите index.html или index.php и перенаправьте в корень
RewriteEngine On RewriteCond %{THE_REQUEST} /index.php HTTP [NC] RewriteRule (.*)index.php$ /$1 [R=301,L]
RewriteEngine On RewriteCond %{THE_REQUEST} /index.html HTTP [NC] RewriteRule (.*)index.html$ /$1 [R=301,L]
301 редирект для url с GET параметрами
Очень полезное правило, позволяющее избавиться от нежелательных дублей и прочих соплей сайта. В особенности поможет обладателям различных CMS, особенно касается вордпресс.
Пример адреса: https://nicola.top/page.php?id=15477852.
RewriteCond %{QUERY_STRING} id=15477852 RewriteRule .* http://site.ru/page.php? [R=301,L]
Если необходимо убрать все get параметры после знака (?). Можно использовать следующий пример:
RewriteRule (.*) $1? [R=301,L]
Располагать после: RewriteBase /
301 редирект для urlов с расширениями
Очень хорош, в особенности при некоторых ошибках в url.
Вариант 1. RewriteRule ^(([^/]+/)*[^.]+)$ /$1.html [L] Вариант 2. RedirectMatch 301 (.*)\.php$ http://www.site.com$1.html
Использование PHP для настройки 301-редиректа
Этот метод поможет тем, кто не использует сервер Apache. Аналог правила для php:
header("HTTP/1.1 301 Moved Permanently"); header("Location: http://соответствующий сайт/dir/"); exit(); ?>
Как сделать 301-редирект для сайтов на nginx
И названия понятно, что это перманентный редирект для тех у кого сайт на nginx.
if ($host = ‘www.domain.com’ ) { rewrite ^(.*)$ http://domain.com$1 permanent; }
Основной синтаксис регулярных выражений для файла Apache / .htaccess
В данном регулярном выражении можно использовать любые печатные символы и пробел. Тем не менее часть символов имеет особое назначение:
() — используются для выделения нужных групп символов.
^ — спецсимвол начало строки.
$ — спецсимвол конец строки.
. — обозначает любой символ.
| — обозначает альтернативу. Например, выражения “A|B” и “(ABC|DEF)” означают “A или B” и “ABC или DEF” соответственно.
? — ставится после символа (или группы символов), который может как присутствовать, так и отсутствовать.
* — ставят после символа (или группы символов), который может отсутствовать или присутствовать неограниченное число раз подряд.
+ — действует аналогично символу * с той лишь разницей, что предшествующий ему символ обязательно должен присутствовать хотя бы один раз.
[] — используются для перечисления допустимых символов. Внутри скобок можно использовать диапазоны: например, выражение “[0-9]” равносильно выражению “[0123456789]”. Если символы внутри квадратных скобок начинаются с символа ^, это означает любой символ, кроме перечисленных в скобках.
\ — ставится перед спецсимволами, если они нужны в своем первозданном виде.
{3,9} — фигурные скобки означают диапозон количества символов, в данном случае допускается от 3 до 9 символов, длина строки из символов должна быть равна или более 3 равна или менее 9 символов.
Все, что расположено после символа ‘#’, считается комментарием.
Плагин Redirection для обладателей сайта на CMS WorPress
Прекрасное решение для детектирования 404 ошибки.Один из самых простых способов перенаправить url. Плагин Redirection — самый популярный менеджер перенаправления для WordPress. С его помощью вы можете легко управлять переадресацией url, отслеживать ошибки 404. Также этот плагин позволяет убирать / в конце url. Это поможет уменьшить количество ошибок и улучшить рейтинг Вашего проекта.
Redirection — позволяет создавать и управлять перенаправлениями
Создает редирект быстро и легко, не требуя знаний Apache или Nginx. Если ваш сайт на WordPress поддерживает постоянные ссылки!!!! Тогда Вы с уверенностью можете использовать этот плагин для перенаправления любого URL-адреса своего сайта. В плагине осуществлена полная поддержка регулярных выражений, поэтому Вы можете создавать шаблоны Permanent Redirect с любым кол-вом URL-адресов.
Можно настроить плагин и для контроля над вашим контентом. Когда произойдет изменение поста или страницы, плагин автоматически создаст нужную переадресацию на новый URL-адрес. В дополнение к обычному редиректу URL-адресов. У Вас есть возможность перенаправить URL на основе других условий:
- Статус входа — redirect, только если пользователь вошел или вышел из системы.
- Браузер — redirect, если пользователь использует определенный браузер.
- Referrer — redirect, если пользователь посетил ссылку с другой страницы.
- Cookies — redirect, если установлены определенные cookie.
- HTTP headers — redirect, на основе HTTP-заголовка.
- Custom filter — redirect, на основе собственного фильтра WordPress.
Позволяет также отслеживать все ошибки 404, которые происходят на вашем сайте.
Redirection имеет поддержку APACHE & AMP & NGINX
По умолчанию этот плагин будет управлять всеми редиректами с помощью WordPress. Однако его можно настроить так, чтобы все Redirecty автоматически сохранялись в файле .htaccess и обрабатывались самим Apache. В случае если вы используете Nginx, вы можете экспортировать настройки в файл правил перезаписи Nginx. Плагин также имеет полнофункциональную систему импорта и экспорта:
- Импорт и экспорт в Apache и .htaccess;
- Экспорт в правила перезаписи Nginx;
- Копировать редирект между сайтами с помощью JSON;
- Импорт и экспорт в CSV для просмотра в табличном варианте;
- Используйте WP CLI для автоматизации.
Плагин Simple 301 Redirects для WordPress
Simple Redirects — это простой способ перенаправления запросов на другую страницу вашего сайта или в другом месте в Интернете. Особенно удобен, если Вы переносите сайт WordPress и не можете сохранить четкую структуру URL. Установив redirects со старых страниц на новые, любые входящие ссылки будут передавать свой стат.вес.
Плагин SEO Redirection Plugin для WordPress
SEO Redirection — это плагин WordPress для управления редиректом. Вам доступно легкое создание и управление редиректами своего сайта. Этот плагин крайне полезен! Особенно если Вам нужно перенести структуру URL, со старого веб-сайта или поменять каталог своего сайта на WordPress.
Какой функционал имеет плагин SEO Redirection:
- Ручное добавление редиректов 301, 302 и 307 на WordPress.
- Поддерживает Redirect wild card.
- Исправлять ошибки сканирования 404 в Google Search Console.
- Поддержка WPML и функций импорта / экспорта.
- Авто-добавление переадресации при изменении URL.
- Прямые редиректы (страниц, публикаций, черновиков) после их изменений.
- Расширенная панель управления.
- Вы можете перенаправить папки и все их содержимое.
- Ведется полный журнал для всех перенаправленных URL-адресов.
- Возможно использование регулярных выражений в перенаправлении.
- Apache .htaccess не требуется, плагин работает только в WordPress.
- Перенаправить index.php, index.html и index.htm.
В заключение
Перенаправления крайне необходимая вещь в поисковом продвижении. Благодаря Permanent Redirect можно избавиться от дублей , указать основной источник. Достаточно часто R-t используют для переадресации ошибки 404 на другие страницы проекта.
Меры предосторожности при переадресации 301:
- В процессе перенаправления 301 нам необходимо убедиться, что содержимое старого и нового URL-адресов очень релевантно. Если два содержимых не релевантны, это может повлиять на эффект перенаправления.
- Если вы пытаетесь использовать несколько доменных имен, связанных с контентом, 301 перенаправить на целевое доменное имя для повышения рейтинга веб-сайта, это относительно опасная операция, и ее легко расценить как мошенничество.
В этом руководстве я постарался очень подробно расписать все возможные перенаправления. Максимально задействовав файл .htaccess и доступные плагины для WordPress. А еще я, предлагаю вам, почитать полезный пост, о том, как создать файл robots.txt для сайта. Желаю Вам успехов и удачи с Вашими переадресациями.
С этой статьей читают:
Спасибо, что читаешь: SEO HELPER | NICOLA.TOP
Привет, Мой сайт не перенаправляется, когда я ввожу IP-адрес. Что мне сделать, чтобы он перенаправлял с IP-адреса.
Убедитесь, что вы используете выделенный IP-адрес , который разрешается на сервер, на котором вы настраиваете редирект. Кроме того, проверьте, есть ли другой файл .htaccess, от которого он может наследовать правило, или другое правило в том же файле .htaccess может мешать этому перенаправлению.
Привет, позвольте мне спросить, прежде чем я разрушу свою стратегию оптимизации сайта, мне нужно объединить две переменные: «с www на не с www» и «удалить расширение файла .php до косой черты». Я использую WordPress, и мне нужно сделать полную переадресацию 301, чтобы применить ко всему контенту: domain.com/category/post-name.html на domain.com/post-name/
Поскольку WordPress использует правила .htaccess, я не рекомендую добавлять правила в файл вручную. Вместо этого я рекомендую настроить постоянные ссылки на панели инструментов , а затем использовать плагин переадресации 301 для постоянной переадресации любых старых URL-адресов на новые. Это автоматически добавит правила в ваш файл .htaccess в соответствии с правилами WordPress.
Привет, дорогой,
я вставил это, но мой сайт не может перенаправить,
пожалуйста, помогите
RewriteEngine на
RewriteCond %{HTTP_HOST} ^dubaivacancy.me [NC]
RewriteRule ^(.*)$ domein.com/$1 [L,R=301,NC]
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https:/%{HTTP_HOST}/$1 [R=301,L]
# НАЧАТЬ WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [Л]
Спасибо Вам за Ваш вопрос. Чтобы уточнить, вы получаете какое-либо сообщение об ошибке при попытке настроить перенаправление или это просто перенаправление в неправильное место? Вы также должны убедиться, что файл .htaccess имеет правильное имя и доступен из корневого каталога документов веб-сайта (обычно это папка public_html).
This information is worth everyone’s attention. When can I find out more?