19 полезных возможностей файла .htaccess
Содержание:
- Пример двойного редиректа
- Редирект в .htaccess (RewriteEngine)
- Проверка редиректа 301
- Способ 3. Простейший javascript-редирект.
- Настраиваем редиректы для SEO
- Канонизация домена сайта или как склеить домен?
- 301 редирект на http для одной страницы
- How to do a 301 redirect
- 302 редирект в SEO
- Способ 5. Javascript-редирект с задержкой.
- Объяснение
- Все стандартные редиректы в nginx
- Как сделать редирект страницы. Способ 1 — PHP-редирект.
- Что такое редирект?
- Как сделать редирект через файл htaccess
- Самая лучшая стратегия для 301 редиректов
- Зачем нужен редирект?
Пример двойного редиректа
Для того, чтобы было понятно, о чем идет речь, приведу пример. Допустим, у вас настроен и добавление к урлу в конце слеш. То есть вы хотите такое преобразование:
http://site.ru/catalog -> https://site.ru/catalog
Допустим, у вас сначала был настроен редирект на https подобным образом:
server { listen 80; root /var/www/site.ru/public; location / { return 301 https://site.ru$request_uri; } }
А потом вас попросили добавить редирект всех урлов без слеша на тот же урл только со слешем на конце. Вы идете в секцию c listen 443 и добавляете редирект.
server { listen 443 http2; ................... location / { rewrite ^(*)$ $1/ permanent; ................... }
# curl -I -L http://site.ru/catalog HTTP/1.1 301 Moved Permanently Server: nginx Content-Type: text/html Content-Length: 162 Connection: keep-alive Location: https://site.ru/catalog HTTP/2 301 server: nginx content-type: text/html content-length: 162 location: https://site.ru/catalog/ HTTP/2 200 server: nginx content-type: text/html; charset=utf-8 vary: Accept-Encoding
На выходе у вас 2 редиректа вместо одного, что плохо для СЕО. Надо по возможности все реализовать в одном. В данном случае напрашивается простое и очевидное решение:
server { listen 80; server_name site.ru www.site.ru; root /var/www/site.ru/public; location / { return 301 https://site.ru$request_uri/; } }
Вроде бы все нормально. Теперь редирект будет автоматически добавлять слеш в конец запроса. Но проблемы начнутся со ссылками на медиа файлы. Например, запрос http://site.ru/catalog/img.png будет превращаться в https://site.ru/catalog/img.png, что нам совершенно не нужно. Чтобы это исправить, надо сделать так.
server { listen 80; server_name site.ru www.site.ru; location ~* ^.+.(js|css|png|jpg|jpeg|gif|webp|ico|woff|txt)$ { return 301 https://site.ru$request_uri; } location / { return 301 https://site.ru$request_uri/; } }
Теперь все будет нормально, так как location со статикой указан в виде регулярного выражения. В случае попадания запроса в указанное правило, будет выполнен редирект без слеша. Все остальное попадет в следующий префиксный /. То же самое можно сделать с помощью if и одного location, но c if работать будет медленнее. Там где можно обходиться без if, лучше его не использовать.
Редирект в .htaccess (RewriteEngine)
Синтаксис:
Redirect URL-path URL-to-redirect
Необязательный параметр — это три цифры — код редиректа (например, 301). Если не указан, то по умолчанию подставляется 302.
— часть запрашиваемого пользователем (или поисковиком) адреса, которая должна обязательно начинаться со слеша (/)
— полный адрес сайта (и, возможно, часть пути), на который будет осуществляться редирект. Должен быть вида http://site.ru/ — то есть обязательно должен присутствовать протокол (http://) и закрывающий адрес сайта слеш (/).
Если заканчивается не слешем, то редирект будет срабатывать только в случае точного совпадения запрошенного пользователем адреса и .
Если заканчивается слешем, то редирект сработает не только для указанного адреса, но и для всех, которые начинаются на указанный. А к будет добавлена часть адреса, следующая за последним указанным слешем в .
Действие директивы аналогично , но в параметрах URL-regexp и URL-to-redirect можно использовать регулярные выражения.
// должно быть включено (on) для работы RewriteRule RewriteEngine on RewriteRule URL-regexp URL-to-redirect ]
У директивы более широкий спектр применения. Который, в числе прочих возможностей, разрешает ее использования и для редиректа — с указанием в конце строки в квадратных скобках флагов (выполнить немедленно) и (редирект).
Примеры использования:
Redirect / http://yandex.ru/yandsearch?text= # Выполнится 302 редирект (по умолчанию) на поиск в Яндексе символов, введенных в адресную строку после названия Вашего сайта. # То есть если посетитель введет http://ваш_сайт.ru/page, то браузер его перенаправит на http://yandex.ru/yandsearch?text=page Redirect 301 /hello.html http://google.ru/search?q=bye # В случае перехода на страницу http://ваш_сайт.ru/hello.html выполнится 301 редирект на поиск в Гугле фразы "bye". RedirectMatch (.*)\.jpg$ http://хостинг_для_картинок$1.jpg # "Временно" (по умолчанию действует 302 редирект) переадресовываем все запросы jpeg-картинок на какой-либо бесплатный хостинг # или то же самое, но с применением RewriteRule: RewriteEngine on RewriteRule (.*)\.jpg$ http://хостинг_для_картинок$1.jpg
Проверка редиректа 301
Проверить 301 редирект не составит особого труда. Вам необходимо лишь ввести в строке браузера старый адрес своей страницы или сайта. Когда настройка проведена верно, вы будете перенаправлены на новый URL-адрес. Иногда для корректной проверки 301 редиректа требуется провести чистку кэша вашего браузера. Как правило, после всех манипуляций проверка проходит успешно.
Для окончательного подтверждения правильности настройки 301 редиректа рекомендуется проверить ответ сервера при помощи специальных сервисов (например, 2ip.ru) или использовать программу Netpeak Spider. Она позволит получать дополнительную информацию о вашем сайте. Ответ сервера должен быть «301» или же «301 MovedPermanently -> 200 OK».
Вас также может заинтересовать: Редирект с http на https: повышаем безопасность сайта
Способ 3. Простейший javascript-редирект.
Разница этого редиректа в том — что сначала в браузер загружается страничка HTML — потом после её загрузки происходит редирект. Может ощущаться некоторая задержка с появлением «белого экрана» в момент редиректа — в этом небольшой минус перед header-редиректом. Не сработает на компьютерах/браузерах, где отключен javascript. Соответственно REFERER виден именно тот, где был код редиректа (т.е. сама страничка с кодом будет как источник перехода).
Оформляется так (в секции <body> или <head>):
<script > document.location = ‘//leonov-do.ru/’; </script> |
Если на страничке установлен код Яндекс.Метрики — он скорее всего не успеет сработать и засчитать посетителя, т.к. подобный редирект срабатывает быстрее метрики.
Настраиваем редиректы для SEO
Как мы уже упоминали, это самый популярный способ использования .htaccess. Перед тем, как настраивать тот или иной вид переадресации, убедитесь, что это действительно необходимо. Например, редирект на страницы со слешем в некоторых CMS настроен по умолчанию. О настройках редиректа для SEO мы писали в блоге.
При настройке 301 редиректов помните о двух правилах:
- Избегайте нескольких последовательных перенаправлений — они увеличивают нагрузку на сервер и снижают скорость работы сайта.
- Располагайте редиректы от частных к глобальным. Например, сначала переадресация с одной страницы на другую, затем общий редирект на страницы со слешем. Это правило работает не в 100% случаев, поэтому с размещением директив нужно экспериментировать.
1. Настраиваем постраничные 301 редиректы
Это потребуется в следующих случаях:
- изменилась структура сайта и у страницы поменялся уровень вложенности;
- страница перестала существовать, но нужно сохранить ее входящий трафик (например, в случае отсутствия товара обычно делают переадресацию на товарную категорию);
- поменялся URL, что крайне нежелательно, но тоже встречается.
Просто удалить страницу — плохая идея, лучше не отдавать роботу ошибку 404, а перенаправить его на другой URL. В этом случае есть шанс не потерять позиции сайта в выдаче и целевой трафик. Настроить 301 редирект с одной страницы на другую можно при помощи директивы простого перенаправления:
- — адрес страницы от корня, без протокола и домена. Например, .
- — полный адрес страницы перенаправления, включая протокол и домен. Например, .
2. Избавляемся от дублей
Каждая страница сайта должна быть доступна только по одному адресу. Для этого должны быть настроены:
- редирект на страницы со слешем в конце URL или наоборот;
- главное зеркало — основной адрес сайта в поиске.
Сделать это можно при помощи модуля . В его составе используются специальные команды — директивы сложного перенаправления. Первой командой всегда идет включение преобразования URL:
Переадресация на слеш или наоборот
Настроить ли переадресацию на страницы со слешем или без, в каждом случае нужно решать индивидуально. Если у сайта уже накоплена история в поиске, анализируйте, каких страниц в индексе больше. Для новых сайтов обычно настраивают редирект на слеш. Проверить, не настроена ли переадресация по умолчанию, просто: удалите/добавьте слеш в конце URL. Если страница перезагрузится с новым адресом — мы имеем дубли, требуется настройка. Если URL подменяется — все в порядке. Проверять лучше несколько уровней вложенности.
Код 301 редиректа на страницы без слеша:
3. Настраиваем главное зеркало
Для начала нужно определиться, какой адрес будет являться основным для поиска. SSL-сертификат давно уже мастхэв. Просто установите его и добавьте правило в .htaccess. Не забудьте также прописать его в robots.txt.
Редирект на HTTPS
Определять, с «www» или без будет главное зеркало, можно несколькими способами:
- добавить сайт в Яндекс.Вебмастер в двух вариантах, в консоли отобразится информация, какой URL поисковик считает главным зеркалом;
- проанализировать выдачу и посмотреть, каких страниц сайта больше в индексе;
- для нового ресурса не имеет значения, с «www» или без будет адрес, выбор за вами.
После того как выбор сделан, воспользуйтесь одним из двух вариантов кода.
Редирект с без www на www
4. Перенаправляем с одного домена на другой
Самая очевидная причина настройки этого редиректа — переадресовать роботов и пользователей на другой адрес при переезде сайта на новый домен. Также им пользуются оптимизаторы для манипуляций ссылочной массой, но дроп-домены и PBN — серые технологии продвижения, которые в рамках этого материала мы затрагивать не будем.
Воспользуйтесь одним из вариантов кода:
или
Не забудьте поменять в коде «mysite1» и «mysite2» на старый и новый домен соответственно.
Канонизация домена сайта или как склеить домен?
Чтобы склеить домен с www на без www:
Для склейки с без www на с www:
Для того чтобы правильно выбрать на какой из вариантов склеивать, желательно посмотреть:
- который из этих вариантов больше находится в ТОПе
- у какого из вариантов больше страниц в индексе
Канонизация слеша в конце урла
При проектирование сайта важно определиться с одним форматом использование слеша в конце урла, так как для поисковых систем 2 урла вида
- http://www.site.com/cat1/
- http://www.site.com/cat1
являются разными. Поэтому после того как вы определились, как именно у вас будет на сайте, необходимо прописать следующие редиректы:
Для того чтобы удалить слэш в конце:
Для того чтобы добавить слэш в конец адресной строки:
Редирект одной страницы на другую страницу:
Редирект для дублей главной страницы:
Этот код гарантирует, что любой адрес домашней страницы, который включает несколько версий прямых ссылок имени страницы, например, default.htm или index.html, будет перенаправлен на каноническую главную страницу, http://www.site.com:
Если структура каталога у вас отображается в url-ле, то при перекаталогизации у вас, соответственно, будут изменяться и url. В таком случае необходимо прописать следующий редирект:
Но, если url старого каталога начинается сразу после домена: www.site.com/old-catalog/, то необходимо воспользоваться следующим кодом
Редирект при смене расширения файлов
Если вы вдруг переехали на другую платформу или CMS, и при этом у url-ов изменились только расширение, то в этой случае вам поможет вот такой редирект:
301 редирект на http для одной страницы
В этой ситуации подойдет:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:X-HTTPS} 1
RewriteCond %{REQUEST_URI} ^/нужная-страница$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1
Второй метод осуществляет общий переезд на защищенный протокол (https), но одна страница останется на старом протоколе (http). Этот способ подойдет для интеграции 1С Bitrix с 1С Предприятие, так как система не может работать с защищенным протоколом:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:X-HTTPS} !1
RewriteCond %{REQUEST_URI} !^/необходимая-страница$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1
RewriteCond %{HTTP:X-HTTPS} 1
RewriteCond %{REQUEST_URI} ^/необходимая-страница$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1
Для готовой интеграции с 1С-Битрикс, формула позволяющая исключить директорию bitrix/admin/1c_exchange.php из общего правила:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1
How to do a 301 redirect
There are many ways to do 301 redirects, but the most common method is to edit your site’s .htaccess file.
You’ll find this in your site’s root folder:
Don’t see the file? That means one of two things:
- You don’t have a .htaccess file. Create one using Notepad (Windows) or TextEdit (Mac). Just create a new document and save it as .htaccess. Make sure to remove the standard .txt file extension.
- Your site isn’t running on an Apache web server. This is somewhat technical, but there are different types of web servers. Apache, Windows/IIS, and Nginx are the most common. Only Apache servers use .htaccess. To check that your website runs on Apache, ask your web host.
Here are some snippets of code for adding common types of 301 redirect via .htaccess:
IMPORTANT. These instructions are for Apache web servers only. Read this if your site runs on Nginx, or this if your site runs on Windows/IIS.
Redirect an old page to a new page
Redirect 301 /old-page.html /new-page.html
Using WordPress? Remove the need to edit the .htaccess file with the free Redirection plugin.
It makes adding 301 redirects as simple as this:
Redirect an old domain to a new domain
RewriteEngine on RewriteCond %{HTTP_HOST} ^oldsite.com RewriteCond %{HTTP_HOST} ^www.oldsite.com RewriteRule ^(.*)$ https://newsite.com/$1
Sidenote. There are quite a few ways to do this. I am by no means an expert when it comes to Apache servers and htaccess files. This is the code that has always worked for me. Make sure to test this before implementing on your site.
IMPORTANT! If is already in your .htaccess file, do not repeat it. Just copy the rest of the code. It’s also possible to do this in Cpanel, which may be preferable.
Redirect entire domain from non-www to www (and vice-versa)
Here’s the non-www to www version:
RewriteEngine on RewriteCond %{HTTP_HOST} ^example.com RewriteRule ^(.*)$ http://www.example.com/$1
Here’s the www to non-www version:
RewriteEngine on RewriteCond %{HTTP_HOST} ^www.example.com RewriteRule ^(.*)$ http://example.com/$1
IMPORTANT! The placement and order of code in your htaccess file matters too. You may experience unwanted effects if multiple instructions are placed in the “wrong” order (e.g., redirect chains, etc.). If you’re planning to implement a lot of 301 redirects in your htaccess file, this is something worth looking into.
Redirect entire domain from HTTP to HTTPS
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}
IMPORTANT! You must have an SSL certificate installed on your website for this to work. Otherwise, you’ll get the cautionary “Not secure” message.
Redirect entire domain from non-www to www and HTTP to HTTPS
RewriteEngine On RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}
302 редирект в SEO
С точки зрения SEO 302 редирект просто находка. Ведь именно он позволяет временно переадресовать с одной страницы на другую, при этом сохраняя оба документа в поиске
«Вес» страницы в таком случае не передается, что для продвижения порой очень важно
, 302-й помогает решать такие задачи, как:
1. Переадресация во время доработки страницы
Представим, что у нас имеется ресурс, основной источник посетителей которого — органическая выдача. Закрывать страницы на время доработки в таком случае проблематично, так как это может повлиять на позиции и видимость.
Одним из решений может стать 302 редирект. Простановка переадресации с редактируемой страницы на временную поможет оставить оба документа в поиске, при этом отправив пользователей на рабочий раздел.
После доработки страницы, редирект необходимо убрать.
2. Переадресация на временный раздел
После проведения мероприятия редирект убирается, при этом видимость и позиции сайта сохраняются.
Важно!
Не стоит ставить 302 редирект на слишком длительное время. В противном случае поисковые системы будут считать его 301-м и исходная страница, то есть та, с которой идет редирект, просто пропадет из поиска. Об этом официально заявлял Google и это проверено на практике уже не одним web мастером.
Используйте 302 редирект грамотно и он позволит решить многие SEO задачи.
Способ 5. Javascript-редирект с задержкой.
Этот вариант больше подходит если нужно сначала выполнить какой-то Javascript-код (например Метрики и т.п.) — а потом редиректить.
Не слишком надёжный способ выполнения задержки, т.к. у всех на компьютерах скорость выполнения Javascript может быть разной, но это лучше чем ничего. Т.е. можно рядом поставить код метрики и к примеру задержку в 300 миллисекунд — код Метрики скорее всего успеет выполниться и потом будет редирект.
Таким образом, можно пробовать использовать и этот редирект для учёта достижения целей в метрике например и др.
<script > <!— setTimeout (‘window.location = «//leonov-do.ru/»;’, 300); //—> </script> |
В данном случае код сработает через 300 миллисекунд (1000 = 1 секунда). Не очень удобно может быть и для посетителя, но если нужен учёт метрикой (и не используются цели на предыдущей страничке на клик по кнопке и т.п.) — это тоже вариант.
Объяснение
Допустим, есть «хорошо известный» веб-сайт — https://example.com/. И давайте предположим, что есть ссылка, как
Эта ссылка на страницу регистрации, после регистрации вы будете перенаправлены на https://example.com/login, который указан в URL-адресе в GET параметре redirectUrl.
Что произойдет, если мы изменим example.com/login на attacker.com?
Посещая этот URL, если после регистрации мы будем перенаправлены на attacker.com, это означает, что у нас есть открытая уязвимость перенаправления. Это классический открытый редирект и часто используется для фишинга.
Почему это происходит?
Это происходит из-за недостаточной проверки перенаправления в серверной части, что означает, что сервер неправильно проверяет, находится ли URL-адрес перенаправления в своем белом списке или нет. Вот несколько примеров уязвимого кода
PHP (Server-Side)
Здесь код php слепо захватывает URL-адрес из параметра redirect_url и перенаправляет на этот URL-адрес, используя HTTP-заголовок Location.
Javascript (Client-Side)
Мы можем назначить строку URL для location.href объекта . Это приведет к перенаправлению. Если там нет проверок, значит, это уязвимость.
HTML (Client-Side)
Метатеги HTML могут обновлять сайт с заданным URL-адресом в качестве содержимого (content), а также вы можете указать время задержки перед обновлением.
- Посетите каждую конечную точку цели, чтобы найти параметры «redirect».
- Просмотрите истории прокси. Обязательно используйте фильтры.
- Простой перебор (Bruteforcing) тоже может помочь найти уязвимость
- Вы можете раскрыть многие конечные точки, просто прочитав код JavaScript.
- Google — твой друг, поищите в поисковике, пример запроса:
- Изучите и проанализируйте целевое приложении на наличие потребности перенаправления , например, перенаправление на панель мониторинга после входа в систему или что-то в этом роде.
Все стандартные редиректы в nginx
Рассмотрю типовой пример, когда у нас одновременно присутствуют следующие редиректы:
- С http на https.
- С www на без www для обоих протоколов.
- Без слеша на конце на урл со слешем.
Наша цель будет реализовать все преобразования url в одном месте и выдать клиенту только один 301-й редирект.
server { listen 443 ssl http2; server_name site.ru; root /web/sites/site.ru/www/; index index.php index.html index.htm; access_log /web/sites/site.ru/log/access.log main; error_log /web/sites/site.ru/log/error.log; ssl_certificate /etc/letsencrypt/live/site.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/site.ru/privkey.pem; location / { rewrite ^(*)$ $1/ permanent; try_files $uri/ /index.php?$args; } location ~* ^.+.(js|css|png|jpg|jpeg|gif|webp|ico|woff|txt)$ { access_log off; expires max; } location ~* ^/(\.ht|xmlrpc\.php)$ { return 404; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php-fpm/php7-fpm.sock; fastcgi_index index.php; fastcgi_param DOCUMENT_ROOT /web/sites/site.ru/www/; fastcgi_param SCRIPT_FILENAME /web/sites/site.ru/www$fastcgi_script_name; fastcgi_param PATH_TRANSLATED /web/sites/site.ru/www$fastcgi_script_name; include fastcgi_params; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param HTTPS on; fastcgi_intercept_errors on; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } } server { listen 443 ssl http2; server_name www.site.ru; location ~* ^.+.(js|css|png|jpg|jpeg|gif|webp|ico|woff|txt)$ { return 301 https://site.ru$request_uri; } location / { rewrite ^/(.*)/$ /$1; return 301 https://site.ru$uri/; } } server { listen 80; server_name site.ru www.site.ru; location ~* ^.+.(js|css|png|jpg|jpeg|gif|webp|ico|woff|txt)$ { return 301 https://site.ru$request_uri; } location / { rewrite ^/(.*)/$ /$1; return 301 https://site.ru$uri/; } }
Получилось примерно так. Призываю не копировать бездумно конфиг, а проверить то, что я предлагаю. Хотя я сам внимательно проверил, как мог, но все равно не застрахован от ошибки. На мой взгляд здесь рассмотрены все основные моменты с редиректами. На выходе всегда один 301 редирект, какой бы запрос мы не сделали. При этом все реализовано средствами самого веб сервера, а значит, будет работать максимально быстро.
Как сделать редирект страницы. Способ 1 — PHP-редирект.
Этот редирект срабатывает без загрузки странички.
Страничка на которую идёт редирект — получает оригинальный REFERER (т.е. таким образом не скрыть откуда был редирект).
Данный редирект например можно использовать для Ютуба. Ютуб как известно можно связать только с одним сайтом, соответственно на чужой сайт вы не сможете сделать ссылку. Для обхода этого ограничения создаете отдельный подкаталог на своем домене, в него кладете index.phd с прописанным кодом редиректа.
Редирект нужно оформлять в файл.php и ОБЯЗАТЕЛЬНО до вывода любых символов. То есть если будет лишний пробел или символ, который выводится на экран (например до знака <?) — то редирект не сработает. Любой вывод на такой страничке (коды метрики и т.п.) не сработают после редиректа, а если написать до редиректа — не сработает редирект.
Как писать редирект, пример, — файл index.php:
<?php header («Location: //leonov-do.ru/»); ?> |
301 и 302 редирект особой разницы не имеют для арбитражника (обычно в SEO больше) — но некоторые рекламные сети принципиально пропускают только один из редиректов. Технически 301 обозначает временный редирект, а 302 — постоянный редирект. Указать можно третьим параметром функции код редиректа, например 302 (второй должен быть true, параметры идут через запятую):
<?php header («Location: //leonov-do.ru/», TRUE, 302); ?> |
Что такое редирект?
Это способ перенаправить посетителей веб-ресурса и поисковые системы на URL-адрес, отличный от того, который первоначально запрашивался. Самые используемые типы редиректов следующие.
301 Moved Permanently
301 редирект – это постоянная переадресация, которая передает приблизительно 90-99% веса ссылки. Такое перенаправление говорит, что страница была перенесена на новый адрес, а предыдущий URL-адрес должен считаться недействительным (устаревшим). Чаще всего используется для проставления редиректа с одной страницы на другую без потери веса ссылки.
302 Found (HTTP 1.1) / Moved Temporarily (HTTP 1.0)
302 редирект означает временное перенаправление. Такая переадресация практически не передает ссылочного веса, и в основном её не следует использовать. Сегодня сеть Интернет работает на основе нескольких протоколов. Один из них – HTTP протокол, с помощью которого определяется, как управлять URL-адресами. В двух вариантах данного стандарта код ответа сервера будет отличаться:
- HTTP 1.0: 302 с ответом сервера “Moved Temporarily” (Временно перемещен) – веб-документ временно перенесен на другой URL-адрес.
- HTTP 1.1: произошло изменение в ответе сервера на «Найдено» – веб-документ был найден.
307 Moved Temporarily (HTTP 1.1 Only)
307 редирект в протоколе HTTP 1.1 получил 302 перенаправление. Хотя основные поисковые роботы будут рассматривать его как альтернативу переадресации с кодом 302, но практически в любых ситуациях лучше применять 301 редирект. Исключить из правила можно только ситуации, когда контент перемещался на краткий период времени (к примеру, когда сайт закрывался на техническое обслуживание), а поисковики уже определили, что ваш сервер работает по протоколу HTTP 1.1. Трудно выяснить действительно ли поисковые роботы понимали, что ваш сервер имеет совместимость с этим стандартом. Поэтому для недолгосрочного перенесения контента проще пользоваться 302 редиректом.
Другие виды редиректов
В арсенале оптимизаторов есть и другие типы переадресаций: использование обновления мета-данных (Meta Refresh) или через JavaScript. Они запускаются на страницах, а не на сервере.
Но к таким переадресациям желательно прибегать лишь в крайних случаях, поскольку ними могут злоупотреблять спамеры, а также они могут использоваться на многочисленных дорвеях. Также стоит отметить, что при их использовании вес от ссылок передается в очень незначительном объеме, если это вообще происходит.
Как сделать редирект через файл htaccess
Для того, чтобы перенаправить пользователя с одной страницы на другую требуется использовать следующую комбинацию:
Redirect 301 site.ru/page1/ site.ru/page2/
Где:
- page1- страница которая будет переадресовывать;
- page2 – открывающийся документ.
Важно! Можно записывать адреса в относительном виде, например, /page1/ и /page2/. Также допускается использование конструкции:
Также допускается использование конструкции:
Redirect permanent site.ru/page1/ site.ru/page2/
Для того, чтобы выполнить правило, потребуется посетить административную панель хостинга (или же зайти через FTP), где в корневой папке сайта лежит файл htaccess.
Вводим нужное нам правило.
Самая лучшая стратегия для 301 редиректов
Самой выгодной стратегией перехода на новый домен будет учитывать все основные правила двух главных поисковиков – Google:
- Проставляем 301 редирект со старого на новый сайт.
- Хотя мы не делаем переадресации для служебного файла robots.txt, но прописываем директиву Host для нового домена.
Код для старого сайта будет иметь такой вид:
При этом в файле robots.txt для старого сайта прописываем:
Создание 301 редиректов
Если вам трудно разобраться в некоторых технических вопросах, то можно прибегнуть к использованию услуг создания базовых переадресаций:
- http://www.webconfs.com/seo-tools/similar-page-checker/
- http://www.rapidtables.com/web/tools/redirect-generator.html
В подобных сервисах вам доступна только замена своих данных. Сразу после этой процедуры пользователь получает готовое решение, которое используется для переадресации между каталогами или доменами.
Как проверить 301 редирект?
После любых логических изменений в работе 301 редиректа нужно проверить работает ли сайт правильно:
- Работает ли вообще сайт? – зайдите на главную страницу;
- проверьте все ключевые страницы и разделы сайта на предмет ошибок.
Для более комплексной проверки редиректов существует еще несколько надежных сервисов:
- http://bertal.ru/ – предоставляет максимально комплексные данные об ответах сервера.
- http://www.internetmarketingninjas.com/header-checker/.
Зачем нужен редирект?
Одни из самых основных ситуаций, где применяется редирект:
1. Перенос сайта с одного домена на другой. Этот редирект необходим, чтобы поисковые системы корректно восприняли переезд сайта.
2. Перенос страниц. Аналогично тому, как было в примере с адресом «2222-11-11-11-11».
3. Исправление некорректных страниц. Представьте себе ситуацию, что пользователь указал некорректный адрес страницы где-то в другом сайте и у вас нет возможности как-либо ее подкорректировать. В таком случае, остается только добавить редирект.
4. Для защиты от взлома. Адресное поле браузера это огромное поприще для злоумышленников. Поэтому периодически redirect добавляют для защиты от взлома.
5. Копии страниц. Порой, бывает так, что одна и та же страница доступна по нескольким разным адресам. Это негативно сказывается на сео оптимизации, так как информация дублируется. Чтобы исправить такую проблему применяют редирект с неосновных адресов на основной.
Примечание: Так же может быть применен мета тег rel=»canonical».
6. Техническая необходимость. Например, добавление слэша в конец адреса.
Кстати, вот несколько самых часто используемых редиректов:
1. PHP редирект — перенаправление на другую страницу.
2. Редирект с http на https в htaccess. 7 вариантов.
3. 301 редирект с www и без www в htaccess.