00:23 Как сделать 301 редирект через htaccess, meta-тег, javascript или php | |
Как сделать редиректОглавление 1. Редирект через JavaScript 2. Редирект через .htaccess 3. Редирект через Meta-тег 4. Редирект через php Что такое редирект? Редирект - автоматическое перенаправление пользователей с одной страницы сайта на другую страницу (причем как в пределах одного сайта, так и на внешние сайты). Для поисковых систем редирект применяется для склейки адресов страниц. У каждого редирека есть свой номер, который отвечает за его функцию. Существуют следующие виды редиректов:
Лидером использования среди этих редиректов является 301 редирект. Он используется, когда адрес страницы сайта изменился навсегда. Как показывает практика - это наиболее часто встречающаяся ситуация. Во всех примерах ниже, как раз будет именно он. Существует несколько способов сделать редирект. У каждого есть свои плюсы и минусы. Ниже мы рассмотрим каждый из них в отдельности с примерами. 1. Редирект через JavaScriptJavaScript имеет широкий набор функций для осуществления редиректа. Ниже в примере представлены различные редиректы выполненные с помощью различных функций JavaScript. <script language="javascript" type="text/javascript"> document.location="http://ya.ru/"; //первый вариант location.replace("http://ya.ru/"); //второй вариант window.location.reload("http://ya.ru/"); //третий вариант document.location.replace("http://ya.ru/");//четвертый вариант location="http://ya.ru/";//пятый вариант setTimeout( 'location="http://ya.ru/";', 10000 );//шестой вариант //с заданием интервала (1=1мс) </script> В любом из выше перечисленных вариантов будет автоматический переход на сайт http://ya.ru/ Минусом JavaScript является то, что страница сайта с которого осуществляется редирект обязательно должна существовать это раз. А во-вторых такая конструкция не слишком быстрая, поскольку сначала осуществляется загрузка страницы с которой будет идти редирект - а это лишняя потеря драгоценного времени. 2. Редирект через .htaccessНапомню, что .htaccess - это специальный файл, который лежит в корневой папке вашего сайта. В общем виде редирект через htaccess выглядит так: Redirect [КОД_РЕДИРЕКТА] /АДРЕС_ОТКУДА АДРЕС_КУДА
Примеры редиректа через .htaccess1) Пример редиректорв с www и без www Редирект без www на страницу сайта с www. RewriteEngine On RewriteCond %{HTTP_HOST} ^site.ru RewriteRule (.*) http://www.site.ru/$1 [R=301,L] В данном случае будет автоматически переход с любой страница site.ru на www.site.ru соотвественно. Например site.ru/razdel/123.html -> www.site.ru/razdel/123.html site.ru/razdel -> www.site.ru/razdel Для обратного редиректа с www на без www (www.site.ru -> site.ru) необходимо прописать следующий код: RewriteEngine On RewriteCond %{HTTP_HOST} ^www.site.ru RewriteRule (.*) http://site.ru/$1 [R=301,L] 2) Переадресация пользователя на другой домен Redirect Permanent / http://site.ru Все пользователи будут автоматически перенаправляться на домен http://site.ru/ 3) Переадресация пользователя со страницы на другой адрес Redirect 301 /start.html http://site.ru/hi.html Со страницы /start.html будет выполнен автоматический переход на http://site.ru/hi.html 4) Редирект при смене домена сайта (URL) Иногда нужно сделать полную переадресацию с одного сайта на другой (например, сменился домен сайт). В этом случае необходимо написать следующие четыре строчки: RewriteCond %{HTTP_HOST} ^domen.ru RewriteRule ^(.*)$ http://newdomen/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^www.domen.ru RewriteRule ^(.*)$ http://newdomen/$1 [R=301,L] Например, если Вы введете в адресной строке: domen.ru/cat/1, то благодаря первым двум строчкам произойдет 301 редирект на newdomen.ru/cat/1. Ниже приведен такой же случай, но в случае если адрес сайта будет написан с www: www.domen.ru/cat/1. Возможно, Вы сочтете это не обязательным, но поверьте, что третья и четвертые строчки кода также важны как для пользователей, так и для seo оптимизации (чтобы убрать дубли). 5) Редирект с http://site/yyyy/mm/dd/post/ на http://site/post/ Такой редирект будет полезен для владельцев блогов на WordPress. Указание года, месяца и числа публикации новости вовсе необязательно и создает лишнюю иерархию, которая мешает продвижению блога. Для подобного редиректа нужно использовать следующий код: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RedirectMatch 301 /[0-9]{4}/[0-9]{2}/[0-9]{2}/(.+)/$ /$1/ Например, с адреса http://site/2014/11/24/primerposta/ будет 301 редирект на http://site/primerposta/. 3. Редирект через Meta-тегСинтаксис редиректа через тег meta: <html> <head> <meta http-equiv="refresh" content="1;http://site.ru/"> <head> <body> ... </body> </html> В данном случае будет выполнен редирект (автоматический переход) на http://site.ru/ через 1 секунду. В content первым параметром является секунды, а вторым URL. Если секунды не указаны, то это означает 0 (мгновенный переход). <meta http-equiv="refresh" content="СЕКУНДЫ;АДРЕС"> 4. Редирект через phpВ PHP есть специальная функция header отвечающая за различные варианты переадресации. Примеры header('Location: http://site.ru/', true, 301);// переадресация //с помощью 301 редиректа на site.ru; header('Location: http://site2.ru/');// переадресация с помощью 301 //редиректа на site2.ru; header('Refresh: 5; url=http://site.ru/');// переадресовать с //задержкой на 5 секунд Какой способ редиректа выбрать? На мой взгляд самым лучшим является редирект через файл .htaccess, поскольку все описывается в одном файле и происходит уже не уровне обработки сервера, то есть не требуется загрузки страницы. Это в свою очередь может довольно сильно ускорить процесс загрузки. Во всех других случаях необходимо наличие лишней страницы и небольшой временной задержки из-за того, что страница должна загрузиться хотя бы частично. | |
Категория: Все о сайтах | Просмотров: 490 | |
Всего комментариев: 0 | |