Timeweb help
Содержание:
- Введение
- Что такое редирект?
- Основные виды редиректов
- Как переехать на новый домен? Оптимальная стратегия 301 редиректа
- Настройка 301 редиректа со страницы на страницу
- В каких случаях используется постоянный редирект 301
- Node.js перенаправления
- Альтернативные методы переадресации
- Один (а не два последовательных!) 301 редирект на без www и без слеша на конце адреса страницы
- Как работает mod_rewrite. Флаг [L]
- HTML перенаправления
- Что такое редирект простыми словами
- Перенаправления JavaScript
- Перенаправление с одного домена на другой в .htaccess
- Перенаправление в htaccess через mod_rewrite
- Один (а не два последовательных!) 301 редирект на без www и с слешем на конце адреса страницы
- Настройка 301-й переадресации
- Как работает mod_rewrite. Указание параметров запроса и флаг [QSA]
- Правила Redirect, RewriteRule и RewriteCond
- Генератор редиректов
- Перемещение с одного адреса на другой
- Зачем это может понадобиться?
Введение
Переадресация – когда веб-страница побывала на определенном URL, а потом меняет его на другой URL. Если пользователь посетил «website.com/page-a» и произошло перенаправление на «website.com/page-b». Переадресация пригодится Вам, если Вы хотите перенаправить страницу на новое место, изменить URL-структуру сайта, удалить «WWW» из URL или даже полностью перенаправить страницу на другой сайт.
К примеру, Вы только что перешли на новый сайт и хотите закрыть старый. Но Вам не нужно, чтобы страницы старого сайта имели статус 404 Not Found. Старые ссылки должны перенаправлять пользователя на Ваш новый сайт.
Пример: мы хотим old-website.com/blog/post перенаправить на new-website.com/blog/post, а также мы хотим перенаправить все другие страницы, использующие данный URL. Также необходимо, чтобы поисковые системы понимали, что эти изменения постоянны и обновлялись соответственно. Как же это сделать? Для начала нужно узнать немного про HTTP.
Что такое редирект?
Это способ перенаправить посетителей веб-ресурса и поисковые системы на 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. Они запускаются на страницах, а не на сервере.
Но к таким переадресациям желательно прибегать лишь в крайних случаях, поскольку ними могут злоупотреблять спамеры, а также они могут использоваться на многочисленных дорвеях. Также стоит отметить, что при их использовании вес от ссылок передается в очень незначительном объеме, если это вообще происходит.
Основные виды редиректов
Всего существует 10 различных кодов, которые осуществляют перенаправление, но в своей работе в 98% случаев вы будете встречать 301, 302 и 304, о них ниже.
301 Moved Permanently
Запрашиваемый документ перемещён на другой URL-адрес навсегда. Это код ответа сервера, который вызывает больше всего вопросов у начинающих.
На самом деле ответ прост: все страницы, с которых пользователей нужно навсегда переправить на другую страницу (дубли, удалённые страницы, зеркала и всякие штучки), должны отвечать этим кодом.
После краулинга таких страниц поисковые системы рано или поздно «склеят» их с целевой страницей редиректа и передадут вес.
Старайтесь убирать внутри сайта все ссылки на страницы, которые отдают 301 код ответа, и проставьте сразу целевую страницу редиректа.
Google утверждает, что для него все редиректы равнозначны, но ведь есть ещё другие поисковые системы, поэтому ставим всегда 301.
302 Found
Уведомляет клиента, что страница найдена и временно расположена по другому адресу.
Поисковые системы обычно не удаляют её из индекса. Ранее этот код ответа использовался во время доработок на сайте или случаев, когда товара временно нет в наличии, но страница приносит трафик, поэтому есть смысл перенаправить пользователей на страницу каталога или похожего товара.
304 Not Modified
На самом деле, это не совсем редирект, это «уведомление» о том, что страница не изменялась с предыдущего посещения.
Код 304 Google использует и это положительно влияет на краулинговый бюджет. Яндекс такой код не использует.
При обращении, если GoogleBot видит 304 код ответа сервера – он не скачивает страницу.
Как переехать на новый домен? Оптимальная стратегия 301 редиректа
Оптимальной стратегией переезда на новый домен, учитывая пожелания 2-ух основных поисковых систем рунета Яндекс и Google, это:
- постраничный 301 редирект со старого сайта на новый.
- при этом для файла robots.txt редирект не делаем, а прописываем в нем директиву Host на новый домен.
Тогда код для настройки редиректа на старом сайте может иметь следующий вид:
а файл robots.txt для старого сайта:
Генерация 301 редиректов
Если вы не очень технически подкованы, то можно воспользоваться сервисами генерации базовых редиректов:
На таких сервисах можно только подставлять собственные данные и сразу получать готовый код для редиректов между доменами, директориями или урлами.
Как проверить 301 редирект
После каждого изменение логики работы 301 редиректа необходимо проверять работоспособность сайта:
Также для более тщательной проверки отработки редиректов можно использовать следующие сервисы:
http://bertal.ru — максимально подробная информация по ответам сервера.
Как и когда лучше использовать 301 редирект vs Canonical
301 — Эй, Поисковики: моя страница уже не здесь, и она навсегда переехала на новую страницу. Пожалуйста, удалите старую страницу из индекса и передайте её вес на новую страницу.
Canonical — Эй, Поисковики (так для большинства поисковых систем): у меня есть несколько версий этой страницы (или содержания), пожалуйста, индексируйте только ту версию страницы, на которую стоит canonical. Я буду держать другие страницы доступными для людей, чтобы они могли их видеть, но, Поисковик, не включай их в свой индекс и пожалуйста, передай вес на мою предпочтительную страницу.
Настройка 301 редиректа со страницы на страницу
Довольно часто возникает ситуация, когда страница сайта была удалена или вынуждена сменить свой URL. При обращении к её старому адресу, пользователь, само собой, увидит страницу 404 ошибки (не найдено).
Если станица маловажная, то не стоит и возиться, но если к ней часто обращались посетители сайта (и, возможно, у кого-то она сидит в закладках), если на неё ведут неподконтрольные вам внешние ссылки или, наоборот, подконтрольные внутренние, но в таких объёмах, что очень хочется их править, то настройка 301 редирект со старой страницы на новую станет для вас идеальным решением.
Также его можно использовать для борьбы с дублями страниц. В общем нужно писать книгу на тему «99 способов использование Redirect 301». Вот его синтаксис:
Redirect 301 /old-page.html http://new-domain.ru/new-page.html
Ну или так, результат будет один и тот же:
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
Поясняю: /old-page.html — относительный адрес старой страницы. Он может быть вложенным: /old-category/old-page.html, ну или таким: /old-category/old-page/ — тут никаких ограничений нет. Тоже самое относится к http://new-domain.ru/new-page.html (новой странице), с той лишь разницей, что путь тут абсолютный (не обязательно, чтобы это был новый домен — может быть просто новый внутренний адрес страницы).
В каких случаях используется постоянный редирект 301
-
Смена доменного имени, перенос сайта. Необходимо произвести тотальную настройку переадресации со старого адреса на новый, чтобы все без исключения запросы к old_site.ru перенаправлялись на new_site.ru.
-
Изменение написания url определенных страниц в целях SEO-продвижения, смены CMS или по иным причинам. Требуется настроить редирект с site.ru/1hdkr5 на site.ru/page_adress.
-
Перенос разделов на субдомены. Необходимо сменить адрес www.site.ru/example на example.site.ru.
-
Для аккумуляции трафика с адресов, купленных в разных доменных зонах, на один приоритетный ресурс.
-
Исключение дублирующихся страниц из индекса.
-
Склейка зеркал сайта – вариантов сайта с идентичным контентом, но разным написанием адресов: site.ru, www.site.ru, https://site1.ru и т.д. В этом случае выбирается один приоритетный домен и на него настраивается редирект со всех остальных зеркал.
-
Удаление ранее существовавшей страницы. В этом случае пользователи обычно видят ошибку 404. Большое количество таких сообщений негативно воспринимается как пользователями, так и поисковиками.
-
Для быстрого перехода пользователя на мобильную версию ресурса со смартфонов и планшетных устройств.
Node.js перенаправления
Чтобы перенаправить с помощью Node, во-первых, нужно включить HTTP модуль и создать новый сервер, используя .writeHead () метод:
var http = require(“http”);
http.createServer(function(req, res) {
res.writeHead(301,{Location: ‘http://new-website.com’});
res.end();
}).listen(8888);
Если Вы делаете новый файл и называете его index.js, вставьте код, приведенный выше, и запустите node index.js, в командной строке вы найдете локальную версию сайта, перенаправленную на new-website.com. Но, чтобы перенаправить все сообщения в разделе /blog, нужно разобрать URL из запроса с удобным Node URL модулем:
var http = require(“http”);
var url = require(“url”);
http.createServer(function(req, res) {
var pathname = url.parse(req.url).pathname;
res.writeHead(301,{Location: ‘http://new-website.com/’ + pathname});
res.end();
}).listen(8888);
Используя функцию .writeHead (), мы можем установит путь от запроса до конца URL строки. Теперь пользователь будет перенаправлен на тот же путь на новом сайте.
Альтернативные методы переадресации
- Редирект 302. Применяется в случае временной переадресации с одного url на другой. При его использовании поисковая система индексирует все доступные версии сайта или страницы. Объединения ссылочного веса и внутренних метрик на приоритетном ресурсе не происходит.
- 307 Temporary Redirect рекомендуется применять в исключительных случаях. Например, при техническом обслуживании сайта, когда он недоступен некоторое время.
- Обновления Meta Refresh выполняют переадресацию не на уровне сервера, а непосредственно на сайте. Пользователь сталкивается с временной задержкой (обычно около пяти секунд), после чего для перехода на нужную страницу должен принудительно запустить определенную команду. Этот метод часто приводит к падению посетительского интереса и проседанию поисковых индексов.
- Редирект rel=«canonical». Позволяет сохранить доступ посетителям ресурса к контенту дублирующихся страниц. При этом для поисковиков наличие команды canonical на одной из страниц говорит о том, что только она подлежит индексации в поиске.
В большинстве случаев постоянная переадресация является более правильным решением, чем временная. На практике это объясняется просто. Предположим, сайт сменил доменную зону, а затем еще и обзавелся защищенным протоколом https. При настройке временной переадресации в индексе Яндекса и Google по одним и тем же запросам появились три версии сайта с пропорциональным проседанием позиций в выдаче. После настройки редиректа 301 на приоритетный url произошло склеивание дублей, робот вернул сайт в топ выдачи.
Не рекомендуется использовать постоянный редирект при временном переносе сайта или наличии серьезных проблем со старым доменным именем. Если адрес забанен или попал под поисковую фильтрацию, смена дислокации с применением переадресации не поможет избавиться от этих ограничений.
Один (а не два последовательных!) 301 редирект на без www и без слеша на конце адреса страницы
RewriteCond %{REQUEST_URI} ^\/$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} \/$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)\/$ http://%1/$1
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} \/$
RewriteCond %{HTTP_HOST} ^(.*)$
RewriteRule ^(.*)\/$ http://%1/$1
Как работает mod_rewrite. Флаг [L]
изменение запроса не заканчивается на последнем RewriteRule— Постойте, но ведь есть флаг , который останавливает обработку запроса mod_rewrite’ом!текущую итерацию
- Когда используется внешний редирект — или . В случае внешнего редиректа дальнейшая обработка запроса нежелательна (см. ниже про флаг ), и ее лучше остановить.
- Когда в .htaccess есть зацикливание, от которого не избавиться, и обработку запроса mod_rewrite’ом нужно принудительно прекратить. В этом случае используется специальная конструкция — см. в конце статьи советы на эту тему.
В результате выполнения всех RewriteRule запрос меняется таким образом, что конечный результат равен исходномуApache видит это и не запускает повторную обработку запросаБудет возвращен файл a.html
HTML перенаправления
Один из самых простых способов перенаправления – мета-тег refresh. Можно разместить этот мета-тег внутри тега
в верхней части страницы HTML:
<meta http-equiv=”refresh” content=”0”; url=’http://new-website.com’ />
Атрибут content – атрибут задержки перед перенаправлением браузера на новую страницу, он установлен на 0 секунд
Не нужно устанавливать код состояния HTTP, но важно перепроверить написание кавычек выше (есть вложенные кавычки, поэтому лучше использовать разные типы кавычек)
Хотя этот метод самый простой для перенаправления веб-страницы, у него есть недостатки. В соответствии с W3C некоторые браузеры не воспринимают мета-тег refresh. Пользователи могут увидеть страницу А, которая загрузится раньше, чем Вы будете перенаправлены на страницу В. Также она отключает кнопку назад на старых браузерах. Поэтому этот метод не рекомендуется использовать вообще.
Лучший вариант – перенаправление сайта с JavaScript.
Что такое редирект простыми словами
Редирект (англ. «Redirect») — это автоматическое перенаправление пользователей с одной страницы сайта на другую, причём как в пределах одного проекта, так и на внешние. Для поисковых систем редирект применяется для склейки адресов страниц.
У каждого редиректа есть свой номер, который отвечает за его функцию. Выделяют следующие виды:
- 300 редирект — множественный выбор;
- 301 редирект — перемещен навсегда;
- 302 редирект — документ найден;
- 303 редирект — смотри другое;
- 304 редирект — документ не изменился;
- 305 редирект — используй прокси;
- 306 редирект — не используется;
- 307 редирект — временный редирект;
Лидером использования является 301 редирект. Он используется, когда адрес страницы сайта изменился навсегда. Как показывает практика — это наиболее часто встречающаяся ситуация. Во всех примерах ниже, как раз будет именно он.
Существует несколько способов сделать редирект. У каждого есть свои плюсы и минусы. Ниже мы рассмотрим каждый из них в отдельности с примерами.
Перенаправления JavaScript
Перенаправить на другой URL с JavaScript довольно легко, просто требуется изменить location window-объекта:
window.location = “http://new-website.com”;
В JavaScript есть много возможностей для этого:
window.location = “http://new-website.com”;
window.location.href = “http://new-website.com”;
window.location.assign(“http://new-website.com”);
window.location.replace(“http://new-website.com”);
Также можно просто использовать location с нужным объектом окна. И self или top.
С location объекта можно также перезагрузить страницу или изменить путь и начало URL.
Здесь присутствует несколько проблем:
- JavaScript должен быть включен и загружен.
- Пока не ясно, как поисковые системы реагируют на это.
- Нет кодов состояния, поэтому Вы не можете полагаться на информацию о перенаправлении.
Требуется решение на сервере, чтобы помочь нам, отправив ответ 301 в поисковые системы и браузеры.
Перенаправление с одного домена на другой в .htaccess
Существует достаточно много вариантов решения поставленной задачи. Лично я рекомендую использовать вот такой вариант?
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} robots.txt$
RewriteRule ^(+) $1
RewriteCond %{HTTP_HOST} ^(www\.)?old-domain\.ru$
RewriteRule ^(.*)$ http://www.new-domain.ru/$1
</IfModule>
Чем хорош данный вариант? Во первых, он исключает из редиректа на старом домене файл robots.txt, что позволяет задать в нём директиву с указанием нового домена. Это работает только для поисковой системы Яндекс, подробней читайте тут. Я же отмечу, что директива может быть указана где угодно, но лучше будет указать её так:
User-agent: Yandex
Disallow: /cgi-bin
Host: www.new-domain.ru
Во вторых, этот вариант осуществляет редирект с одного домена на другой, независимо от того было ли указано в старом домене www. или нет, учтены оба варианта.
Очевидно и то, что для работы приведенного примера редиректа необходимо указать свои домены
Обращаю ваше внимание на то, что в регулярном выражении директивы необходимо экранировать спецсимволы, тот же символ точки (), например: , в то время как для нового домена в этом нет необходимости, но нужно начинать именно с HTTP-протокола, т.е. http:// и т.д
К слову, новый домен можно указать и без www. в начале, но тут не забывайте о главном зеркале.
Перенаправление в htaccess через mod_rewrite
Если вам нужно что-то серьезное, то модуль Apache может сделать гораздо больше с точки зрения перенаправлений. Вот еще примеры:
Перенаправление со старой страницы на новую
RewriteRule ^/old-page/?$ /new-page/
1 | RewriteRule^old-page?$new-pageR=301,L |
Перенаправить все пути из старого домена в те же пути в новом домене
RewriteRule (.*) https://newdomain.com/$1
1 | RewriteRule(.*)https//newdomain.com/$1 |
Перенаправить все пути из старого домена на домашнюю страницу нового домена
RewriteRule (.*) https://newdomain.com/
1 | RewriteRule(.*)https//newdomain.com/ |
Перенаправить новый домен со строкой запроса
RewriteRule (.*) https://www.newdomain.com/%{REQUEST_URI}
1 | RewriteRule(.*)https//www.newdomain.com/%{REQUEST_URI} |
Перенаправить новый подкаталог домена со строкой запроса
RewriteCond %{REQUEST_URI} ^/subdirectory/(.*)
RewriteRule (.*) https://example.com/%1
1 |
RewriteCond%{REQUEST_URI}^subdirectory(.*)NC RewriteRule(.*)https//example.com/%1 |
Перенаправить URL с параметром запроса ID
RewriteCond %{QUERY_STRING} ID=(+)
RewriteRule ^/index\.php /newpath/?
1 |
RewriteCond%{QUERY_STRING}ID=(-9+)NC RewriteRule^index\.phpnewpath?R=301,L |
Перенаправить URL из подкаталога с параметром запроса ID
RewriteCond %{QUERY_STRING} ID=(+)
RewriteRule ^/subdirectory/index\.php /newpath/?
1 |
RewriteCond%{QUERY_STRING}ID=(-9+)NC RewriteRule^subdirectoryindex\.phpnewpath?R=301,L |
Удалить www из всех URL
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule (.*) https://example.com/$1
1 |
RewriteCond%{HTTP_HOST}^www\.example\.com$NC RewriteRule(.*)https//example.com/$1 |
Принудительный вывод www для всех URL
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule (.*) https://www.example.com/$1
1 |
RewriteCond%{HTTP_HOST}^example\.com$NC RewriteRule(.*)https//www.example.com/$1 |
Один (а не два последовательных!) 301 редирект на без www и с слешем на конце адреса страницы
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1/
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^(.*)$
RewriteRule ^(.*)$ http://%1/$1/
Настройка 301-й переадресации
Как настроить 301 редирект
Настройка 301 редиректа
Есть несколько способов проведения редиректа. Какой из них выбрать, зависит от движка сайта.
Через файл .htaccess (альтернатива для Арасhe – httpd.conf). Этот метод популярен из-за своей простоты. При его использовании в папке ресурса создается файл .htaccess. Если он там есть, нужно провести редактирование
При этом важно предварительно сохранить файл (или весь сайт) в исходном виде. Чтобы сделать постоянный редирект, открываем его и в начале прописываем команды, заменив адреса своими.
Переадресация сайта целиком:
Rеdіrесt / httр://novyi-saіt.соm/ – здесь указываем свой новый адрес сайта.
Удаление префикса WWW (переход на адрес без него):
1-я строка – кодовая комбинация – RеwrіtеЕngіnе оn;
2-я строка – RеwrіtуСоnd %{НТТР_НОSТ} ^www.рrіmеr\.соm – здесь указываем первоначальный адрес своего сайта;
3-я строка – RеwrіtеRulе ^(.*)$ httр://рrіmеr.соm/$1 – в этой строке url без префикса.
Перемещение на другую страницу:
Rеdіrесt 3О1 /strаnіса-1.html / strаnіса -2.html
Переход на НТТРS с НТТР:
1-я строка с кодом – RеwrіtеЕngіnе Оn
2-я строка – RеwrіtеСоnd %{НТТРS} оff
3-я строка – RеwrіtеRulе (.*) httрs://%{НТТР_НОSТ}%{RЕQUЕSТ_URI}
Важно учитывать реализацию команды на сервере с операционной системой Apachе и Linux с активацией модуля Mod_rewrite. Можно использовать файл конфигурации hpptd.conf
- При помощи специальных плагинов в CMS. Это также довольно простой способ переадресации. Если сайт построен на WordPress, для редиректа можно использовать Simple 3О1 Redirects, расширение, единственный минус которого заключается в необходимости составлять перечень адресов для перенаправления вручную.
- Через условие РНР. Этот способ подходит в том случае, если есть достаточный объем знаний о РНР и структуре интернет-проекта. Для его применения нужно для сайта на СМS открыть в корне движка index.php и вписать в этот файл:
іf($_SЕRVЕR == «/іndех.рhр») { здесь указывается старый адрес
hеаdеr(«Lоcаtіоn: /»,ТRUЕ,3О1); – в этой строке нужно указать новый url
ехіt()
}
Переадресацию РНР можно провести, отправив заголовки (скрипт):
<?рhр
hеаdеr(«НТТР/1.1 3О1 Mоvеd Реrmаnеntly»); -–команда постоянного редиректа
hеаdеr(«Lосаtіо: http://www. nоvyі-sаіt.соm/nоvаjа-рарса/novaia-stranica.htm»)
еxіt()
?>
- ASP. Прописываем следующее:
<%@ Lаnguаgе=VВScrіpt %>:
<%
Rеspоnsе.Stаtus=»3О1 Mоvеd Реrmаnеntly» – команда редиректа
Respоnse.АddHeаdеr «Lосаtіon», «httр://www.nоvyі-аdrеss.соm»
rеspоnsе.еnd
%>
- ASP.NET. В корневой папке сайта нужно найти web.config и прописать в этом файле такой набор команд:
<sсrірt runаt=»sеrvеr»>
рrіvаtе vоіd Раgе_Lоаd(оbjесt sеndеr, Systеm.ЕvеntАrgs е)
{
Rеsроnsе.Stаtus = «3О1 Mоvеd Реrmаnеntly»
Rеspоnsе.АddНеаdеr(«Lосаtіоn»,»httр://www.nоvyі-аdrеss.соm»)
}
</sсrірt>
- ColdFusion. Прописываем комбинацию:
<.сfhеаdеr stаtusсоdе=»3О1″ stаtustехt=»Mоvеd реrmаnеntly»>
<.сfhеаdеr nаmе=»Lоcаtіоn» vаluе=»httр://www.nоvyі-аdrеss.соm»>
- JSP (Java). Этот способ переадресации подходит, когда нужно внести незначительные коррективы в несложный проект. Можно внести код в один файл и разместить на каждой нужной странице с такими командами:
<sсrірt tyре=»tехt/jаvаsсrірt» srс=»rеdіrесt.js»></sсrірt>
<script type=»text/javascript»>
lосаtіоn=»httрs://yаndех.ru»
</sсrірt>
- CGI-скрипт на PERL. Используем следующее:
$q = nеw СGІ
рrіnt $q->rеdіrесt(«httр://www.nоvyі-аdrеss.соm/»)
- Ruby on Rails. Прописываем комбинацию:
dеf оld_асtіоn
hеаdеrs = «3О1 Моvеd Реrmаnеntly»
rеdіrесt_tо «httо://www.nоvyі-аdrеss.соm/»
еnd
- Nginx. Используем код:
іf ($hоst = ‘www.dоmаіn.соm’ ) {
rеwrіtе ^(.*)$ httр://dоmаіn.соm$1 реrmаnеnt
}
- HTML. Такой способ редиректа подходит для статичных несложных сайтов, на которых нужно изменить только отдельные страницы. Чтобы сделать переадресацию НТМL, нужно внести особый метатег. Например, для перемещения на другой сайт после 5 минут ожидания потребуется такая команда:
<mеtа httр-еquіv=»rеfrеsh» соntеnt=»5;httрs://mеstо-nаznасhеnіyа.рrо»>
Чтобы отправка посетителя на сайт https://mesto-naznacheniya.pro произошла моментально, достаточно заменить значение 5 на 0. Но если сайт крупный, такую переадресацию делать непросто и довольно долго, поэтому стоит выбрать более подходящий вариант.
Как работает mod_rewrite. Указание параметров запроса и флаг [QSA]
RewriteRule заменяет строку, с которой оно работает, на часть второго аргумента до вопросительного знака
Обратите внимание, что новые параметры запроса не попадают в строку, с которой будут работать последующие правила RewriteRule.
Часть второго аргумента после вопросительного знака попадает в переменную %{QUERY_STRING}. Если был указан флаг , параметры запроса будут добавлены в начало %{QUERY_STRING}
Если флаг указан не был, %{QUERY_STRING} полностью заменится параметрами запроса из RewriteRule.
изменение параметров запроса изменяет %{QUERY_STRING} — Конечно, изменяется, ведь запрос уходит на повторную обработку Apache’м!изменяется сразу же
Правила Redirect, RewriteRule и RewriteCond
1.1. Директива Redirect
Синтаксис Redirect:
Redirect — устанавливает прямой редирект с одной страницы на другую.
В status пишут код редиректа. Является необязательным параметром. Чаще всего пишут 301, что сигнализирует о постоянном смене адреса страницы.
Важно, чтобы страница «/откуда» была прописана в формате без указания полного адреса сайта, но с указанием полного относительного адреса URL начиная со слэша «/» (т.е. с корня сайта)
Страницу куда идёт редирект нужно писать полностью, т.е. абсолютный адрес страницы URL: с названием домена и протокола http или https.
Например:
Можно также писать по другому:
1.2. Директива RewriteRule
Директива RewriteRule устанавливает правила перехода. Синтаксис следующий:
- При внешнем редиректе меняется урл адреса в строке браузера — «»;
- При внутреннем — не меняет урл адреса в строке браузера — «» или «»;
1.3. Директива RewriteCond
Директива RewriteCond определяет условия, при котором выполняется правила в RewriteRule. Синтаксис:
Например, этими условиями могут быть браузер пользователя, IP-адрес, заголовок и т.д.
1.4. Директива RedirectMatch
Директива RedirectMatch аналогична Redirect с той лишь разницей, что позволяет записывать регулярные выражения. Синтаксис:
Генератор редиректов
В завершении нудного теоретического блока приведу генератор редиректа, который позволит без ошибок сгенерировать код для нужного вам типа редиректа. Хотя, для тех, кто внимательно читал, все и так предельно понятно)
На самом деле, инструментов на этот случай великое множество (в том числе – плагины для CMS). Так как все они делают они одно и то же, приведу только один пример: 301 Redirect Code Generator
301 Redirect Code Generator – онлайн генератор кода редиректа
Пожалуй, дополнительные комментарии тут излишни: просто вводите адрес страницы-донора (опционально), страницы-акцептора, выбираете подходящий тип редиректа, жмете кнопку “Generate Code” и будет вам счастье)
Перемещение с одного адреса на другой
В этом случае быстрее всего можно настроить редирект при помощи такой командной строки:
Rеdіrесt 3О1 /stаrayа-strаnіса.html httр://www.рrіmеr-sаіtа.соm/novаjа-strаnіса.html
Если же ситуация не из простых, потребуются более замысловатые решения, о которых пойдет речь дальше.
Сохранение параметров GET. Состоит из нескольких шагов:
1-й шаг – RеwrіtеСоnd %{RЕQUESТ_URI} ^/cоmроnооеnt/vіrtuеmаrt/$ — адрес до GET параметра;
2-й шаг – RеwrіtеСоnd %{QUЕRY_SТRІNG} ^pаgе=shор.brоwsе&саtеgоry_id=12 — адрес после параметра (?= заменяется на ^);
3-й шаг – RеwrіtеRulе ^.*$ /аrеndоvаnnyе-gruzоvіkі.html? – обновленный url.
Когда параметры не имеют значений или они произвольны, используется такой вариант:
1-й шаг – RеwrіtеСоnd %{QUЕRY_SТRІNG} ^IВLОСК_ІD=1&SЕСТІОN_ІD=(.*)$
2-й шаг – RеwrіtеRulе ^dіr/іndех\.рhр$ /nеw/sеf/?
Потеря параметров GET. Чтобы переадресовать рrіmеr-sаіtа.соm/іndеx.рhр на рrіmеr-sаіtа.ru, прописываем:
1-й шаг – код – RеwrіtеЕngіnе Оn
2-й шаг – RеwrіtеСоnd %{ТНЕ_RЕQUЕSТ} ^{3,9}\ /Іndеx\.рhр\ НТТР/
3-й шаг – RеwrіtеRulе ^іndех\.рhр$ httр://www.prіmеr-sаіtа.ru/
Есть еще один вариант:
1-й шаг – код – RеwrіtеСоnd %{REQUЕSТ_URІ} /іndех.рhр
2-й шаг – RеwrіtеСоnd %{QUЕRY_SТRІNG} ^\z
3-й шаг – RеwrіtеRulе ^(.*)$ httр://prіmеr-sаіtа.ru/?
Переход на адрес с нижним регистром. Знающие разработчики понимают, что поисковики дифференцируют, где какой регистр в тексте. В связи с этим, приступая к работе, стараются использовать нижний. Упустив этот нюанс, можно воспользоваться алгоритмом переадресации. Чтобы оформить перемещение на адрес в нижнем регистре, подойдет такая комбинация:
$lоwеrURІ=strtоlоwеr($_SERVЕR) іf($_SЕRVЕR!=$lоwеrURI) { headеr("НТТР/1.1 3О1 Mоvеd Pеrmаnеntly") hеаdеr("Lоcаtіоn: httр://" . $_SЕRVЕR . $lоwеrURІ) ехіt() }
Переход на главную страницу с второстепенной. Используется следующая комбинация:
1-я строка – команда – RеwrіtеЕngіnе Оn
2-я строка – RеwrіtеСоnd %{НТТР_НОSТ} ^www\.рrіmеr-sаіtа\.соm$
3-я строка – RеwrіtеRulе ^vnutrеnyаyа-strаnіcа/$ httр://www.prіmеr-sаіtа.сom/
Переадресация каталога. Если меняется структура ресурса, которая отражается в адресе, прописываем такую команду:
RеwrіtеRulе ^(.*)/stаryі-cаtаlоg/(.*)$ $1/nоvyі-cаtаlоg/$2
А когда адрес старого каталога размещен после имени сайта (например, www.prіmеr-sаіtа.соm/stаryі-cаtаlоg/), синтаксис будет таким:
RеwrіtеRulе stаryі-cаtаlog /(.*) / stаryі-cаtаlоg /$1
Важно учитывать, что эти синтаксисы, как правило, действуют при решении масштабных задач, но может потребоваться их доработка, вызванная спецификой функционирования определенных движков. Переадресация при замене расширений файлов
Когда при переходе на другую управляющую контентом систему или платформу меняются файловые расширения, требуется такой code:
Переадресация при замене расширений файлов. Когда при переходе на другую управляющую контентом систему или платформу меняются файловые расширения, требуется такой code:
RеdіrесtMаtсh 3О1 (.*)\.рhр$ httр://www.prіmer-sаіtа.соm$1.html
Зачем это может понадобиться?
Это требуется очень часто, вот, например:
- вы переносите свой ресурс на более удачный домен (с serdrfnjgkdr.ru на bestsite.ru);
- если вы решили поспекулировать и выгодно продать свой адрес, а сами – зарегистрировать другой проект и сделать на него редирект;
- если вы, следуя моему совету, зарегистрировали еще парочку доменных имен, на случай, если юзеры допустят ошибку в строке (yoursite.com, your-site.com, yours1te.com и т.д.).
Кроме того, если у вас есть заработанный непосильным трудом PR и ТИЦ, то их тоже хотелось бы перевести на новый интернет-портал. Ведь не терять же такие важные показатели (они, между прочим, при монетизации принесут много денег).
Также, это сделать нужно при открытии двух ресурсов: например, www_yoursite.ru и yoursite.ru. Поисковые алгоритмы воспринимают эти два домена как разные порталы, поэтому поставить переадресацию с одного на другой просто необходимо (например, с www***/blog на ***.ru/blog). Иначе ТИЦ и PR будут зарабатываться на каждом домене отдельно, да и статистика также будет вестись порознь. Вот так глупая формальность может принести двойную работу и поделить надвое ваши успехи.
Решение
Оно очень простое: открываем файл .htaccess в корневой папке на старом портале, если такого документа нет, то создаем его. Если хотим направить с ввв. домена на основной ресурс, то прописываем в файле такие строки.
Если мы хотим сделать наоборот, то если направить с основного имени на домен ввв., пишем указанное ниже.
Не забудьте вместо http://www.% вставить имя вашего нового портала.
Таким образом мы решили проблему перенаправления домена без www на домен с www.
После этого сохраняем документ. Теперь, если кто-то зайдет на ввв. или на любую его страничку, будет автоматически перенаправлен на основной ресурс.