Главная > Веб мастерская > Серверы, VPS, VDS > Как настроить 301 редирект htaccess или web.config

Как настроить 301 редирект htaccess или web.config

Код состояния HTTP 301 (Moved Permanently или 301 редирект) — это стандартный код ответа сервера, который сообщает, что запрашиваемый ресурс перемещен и получил новый URL. Когда он необходим? С 301-ым редиректом вы обязательно столкнетесь при склейке зеркал сайта с префиксом WWW и без него, в случае переезда сайта на новый домен, переноса страницы в другой раздел сайта и изменения ее адреса. Во всех этих случаях вам нужно сохранить текущий трафик, перенаправляя его на нужные страницы. Как это сделать? Смотрите техническую инструкцию в новом посте.

301 редирект htaccess

Настроить 301-й редирект можно разными способами (с помощью HTML, PHP, плагинов для CMS, скриптов), но самый надежный и простой вариант — с помощью .htaccess (для Apache) или web.config (для IIS).

301 редирект htaccess

.htaccess — это файл дополнительной конфигурации веб-сервера Apache, с помощью которого можно задавать настройки на уровне отдельных каталогов. В отличие от главного файла конфигурации httpd.conf, директивы в .htaccess распространяются только на тот каталог, где он размещен, и на дочерние каталоги.

Если в корневой папке вашего сайта нет файла .htaccess, его нужно создать и загрузить с помощью FTP-клиента. Теперь можно приступать к настройке.

Когда вам требуется сделать редирект с текущего домена на другой (например, при переезде сайта), можно использовать директивы модуля mod_alias. Пропишите в .htaccess следующую директиву (вместо newsite.ru укажите ваш новый домен):

Redirect permanent / http://newsite.ru/

или

Redirect 301 / http://newsite.ru/

Приведем еще ряд примеров.

  • Редирект со страницы page1.html на страницу page2.html:
    Redirect 301 /page1.html site.ru/page2.html
  • Редирект с главной страницы сайта на страницу каталога /cat:
    Redirect 301 / site.ru/cat
  • Редирект с каталога /cat на главную:
    Redirect 301 /cat site.ru

Редирект часто используют для склеивания зеркал. В этом случае применяется модуль mod_rewrite. Например, если вы хотите, чтобы шел редирект с домена с www на домен без www, то пропишите такие строки (где yoursite.ru — ваш домен):

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

И наоборот — редирект с домена без www на домен с www:

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

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

RewriteEngine On
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]

Добавить же слеш можно таким образом:

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

Для того чтобы заменить все .htm файлы .html файлами, пропишите следующие строки:

RewriteEngine on
RewriteBase /
RewriteRule ^(.*)\.htm$  $1.html [R=permanent]

Если вы прописываете несколько директив, то строка «RewriteEngine on» указывается один раз — с ее помощью включается модуль mod_rewrite.

Настройка редиректа в web.config

Вариант редиректа с помощью .htaccess работает только для Apache. Для веб-сервера IIS настраивать редирект нужно в файле web.config. Например, редирект с одной страницы (yoursite.ru/page.html) на другую (yoursite.ru/page2.html) будет выглядеть так:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <location path="test.html">
    <system.webServer>
      <httpRedirect enabled="true" destination="http://yoursite.ru/page2.html" httpResponseStatus="Permanent" />
    </system.webServer>
  </location>
</configuration>

301 редирект с домена с www на домен без www настроить можно таким образом:

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Imported Rule 1" stopProcessing="true">
          <match url="^(.*)$" ignoreCase="false" />
          <conditions logicalGrouping="MatchAll">
            <add input="{HTTP_HOST}" pattern="^www\.(.+)$" />
          </conditions>
          <action type="Redirect" url="http://{C:1}/{R:1}" redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

Альтернативные способы настройки редиректа

Если по какой-то причине вы не можете создавать и редактировать web.config или .htaccess (например, в силу ограничений на хостинге) или вам нужна определенная обработка полученных данных, их модификация или проверка, по результатам которой реализуется перенаправление, вы можете настроить редирект с помощью PHP.

Синтаксис следующий:

<?php
  header('HTTP/1.1 301 Moved Permanently');
  header('Location: http://newsite.ru/');
?>

В этом случае происходит принудительная передача кода HTTP-ответа 301, и пользователь перенаправляется на страницу http://newsite.ru/.

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

<meta http-equiv="refresh" content="0; url=http://newsite.ru">

Изменяя цифру 0, вы задаете количество секунд до переадресации. В этом случае редирект реализуется не на стороне сервера, а на стороне клиента (не передается заголовок 301).

Также редирект можно сделать с помощью JavaScript:

<script type="text/javascript">
  window.location.replace("newsite.ru");
</script>

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

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

Вот некоторые из этих сервисов: www.webconfs.com, www.rapidtables.com, www.htaccessredirect.net.

Как настроить редирект, если нет опыта веб-программирования?

Настройка редиректа — сложная техническая задача, для выполнения которой не обойтись без профильных знаний. Если вы не владеете навыками разработки и программирования, и у вас под рукой нет штатного программиста, можно воспользоваться поддержкой хостинг-провайдеров. Многие из них предлагают услугу web-форвардинга (или «переадресация домена», «URL-форвардинг» и т. п.). Она позволяет настроить переадресацию с одного URL на другой. При этом используется 301 редирект.

Другой вариант — плагины для популярных CMS. Так, для WordPress есть плагины Redirection, Safe Redirect Manager, Simple 301 Redirects, а в Joomla! и Wix есть встроенные инструменты редиректа.

Заключение

Лучший способ настроить 301 редирект — с помощью .htaccess. Но он подходит только для веб-серверов Apache. Для IIS придется настраивать web.config. Если же нужно не просто сделать редирект, а учесть определенные условия, то используйте PHP, но в этом случае без помощи программиста не обойтись. Есть и другие способы (в частности, с помощью HTML и JavaScript), но это не 301 редирект, а просто перенаправление без передачи веса. Также можно использовать плагины для популярных CMS или подключить услугу web-форвардинга, если ее оказывает ваш хостинг-провайдер.

NEW!!! Полезное, нужное, важное:

Честный и надежный заработок в интернете
Платежные системы, кошельки и обменники для работы

Лучшие хостинги, сервера и прочее для сайтов

Смотрите также

HTTPS для WordPress под NGINX

Данная статья расскажет о том, как осуществить перевод на HTTPS сайтов на WordPress, не потратив денег на SSL сертификат, получить оценку безопасности A+ , минимизировать расходы на обслуживание HTTPS

Добавить комментарий