Luka. Рекламно-производственная фирма
Luka. Рекламно-производственная фирма
Luka. Рекламно-производственная фирма

Как сделать 301 редирект



301 код ошибки (Moved Permanently) означает, что данная страница или весь сайт перемещены на новый постоянный URL навсегда. Обязательно проверяйте какой код ошибки отдает сервер, когда настроите 301 редирект — для этого я пользуюсь замечательным плагином Firebug.

301 редирект передает в Яндексе и Google:

PR страниц и ТИЦ сайта;
Ссылочный вес.

301 редирект не передает:

Возраст сайта, если редирект настроен со стороннего домена на Ваш домен. Но в тоже время, если Вы настроили 301 редирект в рамках одного домена с более старой страницы на молодую, то это позволит передать возраст;
Наложенные санкции на домен.

Настройка 301 редиректов, если у Вас веб-сервер Apache, происходит в файле .htaccess. А в случае веб-сервера IIS — это будет файл web.config. 301 редирект на wordpress можно не настраивать, так как данная cms при установке спрашивает главной зеркало и все настраивается автоматически. 301 редирект можно настраивать также и с помощью php header.
Основные операторы регулярных выражений

Перед тем, как настраивать правильные 301 редиректы в файле .htaccess нужно чётко различать основные операторы регулярных выражений:

^ — ограничение слева;
$ — ограничение справа;
+ — 1 и более символов;
* — 0 и более символов;
. — любой символ;
() — переменная;
\ — экранирование;
[] — диапазон значений;

Настройка 301 редиректов в файле .htaccess

Я публикую здесь только проверенные и технически законченные рабочие варианты 301 редиректов. База рабочих вариантов 301 редиректов будет пополняться.

1. Редирект со страниц сайта без WWW на страницы с WWW:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^site\.ru$ [NC]
    RewriteCond %{REQUEST_URI} !^/robots.*
    RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
  
2. Редирект со страниц сайта с WWW на страницы без WWW:


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


3. Редирект со страницы http://site.ru/index.php на http://site.ru:


    RewriteEngine On
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
    RewriteRule ^index\.php$ http://site.ru/ [R=301,L]
 
  


4. Редирект со страницы http://www.site.ru/index.php на главную http://www.site.ru/:


    RewriteEngine On
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
    RewriteRule ^index\.php$ http://www.site.ru/ [R=301,L]
 


5. Редирект урла с параметром на любую страница сайта. Например, со страницы http://www.site.ru/news.php?category=1 на http://www.site.ru/news.php?category=2 (здесь параметр category=):


    RewriteEngine On
    RewriteCond %{QUERY_STRING} category=1
    RewriteRule ^news.php http://www.site.ru/news.php?category=2 [R=301,L]
 


6. Редирект урла с параметром на главную страницу сайт. Например, со страницы http://site.ru/index.php?show_section=12 на главную страницу http://site.ru/ (здесь параметр show_section=12):


    RewriteEngine On
    RewriteCond %{QUERY_STRING} show_section=12
    RewriteRule ^index.php http://site.ru/? [R=301,L]
  


7. Редирект с ЧПУ урла на ЧПУ урл, например с http://www.site.ru/gostinica-v-pitere на урл http://www.site.ru/gostinica-v-moskve


    RewriteEngine On
    RewriteRule ^(.*)gostinica-v-pitere$ http://www.site.ru/gostinica-v-moskve [R=301,L]
  


8. Вы наверное в своей практике встречали случай, когда есть 2 сайта с одинаковой информацией, но в то же время доступные по разным адресам (сайты дубли). У этих сайтов одинаковый robots.txt, sitemap.xml и один на двоих .htaccess. Предлагаю вариант 301 редиректа с неосновного такого сайта (site2) на основной (site1).


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


9. Вставка включающая в себе все редиректы со страниц index|default с расширениями htm|html|php|asp|aspx:


    RewriteCond %{THE_REQUEST} ^GET\ .*/(index|default)\.(htm|html|php|asp|aspx)\ HTTP
    RewriteRule ^(.*)(index|default)\.(htm|html|php|asp|aspx)$ http://www.site.ru/$1 [R=301,L]
 
 


10. 301 редирект со старого домена на новый. Прописываем данный код в .htaccess старого сайта.


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


11. Внутренний редирект (НЕ 301!!!!) на новую страницу:


    RewriteEngine on
    RewriteRule ^kontakt.* contacts.php [L]
   


12. Проверка существования файла или каталога:


    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
  


Иногда случается так, что прописать 301 редирект в .htaccess бывает недостаточно. В таком случае необходимо рассмотреть 301 редирект через PHP. Существует несколько вариаций его реализации. Вот, например, такая:

    $refer = $_SERVER['QUERY_STRING'];

    if ($refer != ») $refer = ‘?’.$refer;

    header(‘HTTP/1.1 301 Moved Permanently’);

    header(‘Location: http://newdomain.ru/’.$refer);

    exit();

   




При таком варианте сохраняется передаваемая страница и параметры вызова. И вот такая по-проще конструкция:

    header(“HTTP/1.1 301 Moved Permanently”);

    header(“Location: http://www.newdomain.ru/newdir/newpage.htm”);

    exit();

    
 
 


На одном из западных ресурсов я нашел и такой совсем короткий способ:

     header(«Location: http://newdomain.ru/new/location/», true, 301);

    
 
 


Это три рабочих метода 301 PHP редиректа через. Вы можете использовать любой вариант.

А вот эта функция позволяет убрать какой-то заданный Вами участок URL:


    if (strpos($_SERVER['REQUEST_URI'], ‘http://www.seowind.ru’) !== false) {

    $real_page_url = «http://www.seowind.ru».str_replace ( «/http://seowind.ru», «», $_SERVER['REQUEST_URI'] );

    header(«HTTP/1.1 301 Moved Permanently»);

    header(«Location: $real_page_url»);

    die(«Redirect»);

    }
 


источник: http://www.seowind.ru/vnutrennyaya-opti ... redirekta/

Дата публикации: 19.09.2015






2010-2016, LUKA. Рекламно-производственная компания полного цикла.
Адрес: 143980, Московская обл., г. Железнодорожный, ул. Пролетарская, д. 8, помещение 75.
Тел.: 8 (495) 741-15-44, 8 (926) 383-12-43. E-mail: info@lukaweb.ru. ICQ: 243-670-184.

Создание сайтов в Железнодорожном. Продвижение сайтов в Железнодорожном.
Создание сайтов в Балашихе. Продвижение сайтов в Балашихе.

Support
© Lukaweb