Как сделать 301 редирект htaccess (redirect 301 index.php to /)

redirect 301 index.php to /

301 редирект на htaccess одна из самых запрашиваемых услуг от СЕО оптимизаторов. Redirect 301 служит для переадресации с одной страницы на другую и сообщает поисковой системе что страница была перемещена.

С помощью файла htaccess можно сделать переадресацию с дублирующей страницы на основную, то есть мы убираем дубли страниц посредством 301 редиректа.

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

Чтоб записать переадресацию с одной страницы на другую нужно открыть через блокнот файл .htaccess в корне вашего сайта и записать такие строчки в начало файла:

RewriteEngine On (если такая строчка уже есть то пишем ваш код после нее)

RewriteCond %{REQUEST_URI} ^.*bezopasnost-avto-dorog/.*
RewriteRule ^bezopasnost-avto-dorog/$ http://%{HTTP_HOST}/avto-dorogy/? [R=301,L]

В этом примере мы переадресовываем со страницы вашсайт.ру/bezopasnost-avto-dorog на страницу вашсайт.ру/avto-dorogy

В первой строчке мы проверяем наличие текста "bezopasnost-avto-dorog" в ссылке и если это так, то во второй строчке смотрим чтоб это была нужная страница, а не дочерняя и отправляем на новую страницу.

Бывает ситуация, когда вам нужно сделать 301 редирект со страницы с GET пареметрами, например все страницы с параметром more=1 отправить на эту же страницу без этого параметра, для этого достаточно написать вот такие строчки по аналогии:

RewriteCond %{QUERY_STRING} ^.*more=1.*
RewriteRule ^(.*)$ http://%{HTTP_HOST}/%{REQUEST_URI}? [R=301,L]

Смотрим результат:

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

Мы узнали "как сделать 301 редирект", теперь попробуем применить его к задачи немного посложнее. Редирект с главной на главную без зацикливания.

Redirect 301 index.php to /

Для 301 редиректа с index.php нужно использовать немного другой код, вот такого плана:

RewriteCond %{THE_REQUEST} ^.*/index\.php
RewriteRule ^(.*)index.php$ /$1 [R=301,L]

 

Также, обратите внимание, если мы хотим 301 редиректом закрыть всю категорию то нужно писать

RewriteCond %{REQUEST_URI} ^.*category.*
RewriteRule ^category/(.*)$ http://%{HTTP_HOST}/cat/$1? [R=301,L]

В итоге все посты с категории category будут переадресовываться на категорию cat + имя поста.

 

Что делать если не получается сделать 301 редирект?

Возможна ситуация когда правки htaccess не приводят ни к какому результату, тогда нужно сделать такие действия в последовательности:

  1. Очистить куки браузера. Для этого в Mozilla Firefox надо зайти в "Инструменты" - "Настройки" - "Приватность" - "Очистить недавнею историю"
  2. Проверяем не заработал ли наш код.
  3. Проверяем работает наш файл htaccess или нет, для этого достаточно закинуть такой код RewriteRule ^(.*)$ / [R=301,L] на вашем сайте должна появится ошибка типа "зацикливание редиректа страницы" или любая похожая. (Если вы не увидели ошибки, то нужно написать в техническую поддержку)
  4. Смотрим, возможно другое правило перекрывает наше. Меняем место вызова редиректа 301, возможно ниже или выше наш код заработает.
  5. Если никак не получается сделать redirect 301 через htaccess, то нам нужна php переадресация, делаем ее.

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

 Если вам нужна помощь, напишите свой вопрос в комментариях или в этой контактной форме.

Жмите лайк, если эта статья вам помогла решить проблему:

Комментарии к записи «Как сделать 301 редирект htaccess (redirect 301 index.php to /)»:
  1. Дмитрий:

    Добрый день.У меня поменялись только категории товаров, а ссылки на товары остались прежние. Как сделать так чтобы. если в адресе встречается старая категория, то подставлялась бы новая, но вся остальная часть ссылки не менялась.
    Т.е. к примеру было: мой_сайт/chehol/brand_sony/aaa.html ,а стало мой_сайт/chehol/sony-case/aaa.html

    • admin:

      Добрый день.
      Если вам нужно сделать 301 редирект то нужно прочесть статью о пхп переадресации вот здесь: https://help-wp.ru/php-pereadresaciya-ili-301-redirekt/

      У ВП можно тогда написать if(in_category(2)){
      код для пхп редиректа
      }
      и тогда все товары со старой категории будут редиректиться туда, куда вы им скажете.

  2. Илья:

    Привет.
    Я хочу поменять домен у моего сайта. Как это сделать в панели хостинга я уже разобрался, но мне нужен редирект для сохранения позиций сайта. Вы б не могли мне помочь.
    Ссылки останутся прежними, поменяю только доменное имя.

    • admin:

      Попробуйте вот такой вариант в .htaccess забросить, в самое начало:

      RewriteEngine on
      RewriteCond %{HTTP_HOST} ^(.*)старый_сайт.ru(.*)$
      RewriteRule ^(.*)$ http://новый_сайт.ru/%{REQUEST_URI}? [R=301,L]

      Если есть возможность сделать старый домен на отдельной пустой папке то вам поможет вот такой вариант:

      RewriteEngine on
      RewriteRule ^(.*)$ http://новый_сайт.ru/%{REQUEST_URI}? [R=301,L]

  3. Маргарита:

    Огромное спасибо за Вашу статью.
    Столько блогов и форумов перечитала, но нигде не нашла решения своей проблемы. В моем случае это редирект со старой не существующей страницы на новую (Джумла)
    RewriteCond %{QUERY_STRING} ^.*more=1.*
    RewriteRule ^(.*)$ http://%{HTTP_HOST}/%{REQUEST_URI}? [R=301,L].

  4. Олег:

    Здравствуйте!
    Сайт на WP, страницы сайта имеют окончание .html
    Когда-то был взломан сайт, в выдаче появилось много страниц с .php

    Вроде все подчистили, но страницы в индексе есть.

    Подскажите пожалуйста как сделать редирект с url такого вида мойсайт.ру/userfiles/video-audio/el-shema-nec-nd4550.php

    на главную сайта

    Фактически нужно прописать правило, если страницы не соответствую настройкам сайта, то перенаправлятся на главную

    • admin:

      Добрый день.
      Сейчас нет возможности проверить, но кажись вот такой вариант 301 редиректа через htaccess должен работать:

      RewriteCond %{REQUEST_URI} ^(.*).php$
      RewriteRule ^(.*)$ http://%{HTTP_HOST}/? [R=301,L]

  5. Виталий Охрименко:

    А подскажите пожалуйста такую штуку: дубль проявил себя на следующей странице: (-url-) продублировал главную. Как сделать 301 редирект в данном примере?

    • admin:

      Добрый день.
      Думаю стоить попробовать вот так:

      RewriteCond %{QUERY_STRING} ^.*post_type=post*
      RewriteRule ^(.*)$ http://%{HTTP_HOST}/? [R=301,L]

      Второй вариант более праивльный но его надо тестировать:(-не рабочий-)
      возможно я в нем допустил ошибку.
      первый точно будет работать, но там редирект будет довольно жадный, он сработает на любой странице где будет присутствовать post_type=post, хотя их по логике вещей у вас не должно быть вообще.

      Добавлять нужно в файл htaccess в корне вашего сайта, в начало.

    • Виталий Охрименко:

      Огромное человеческое спасибо! Второй вариант не заработал, зато первый сделал редирект. Еще раз большое спасибо! В качестве благодарности твитнул запись

  6. Юрий:

    Как сделать редирект с (-url-)

    на

    (-url-)

    • admin:

      Добрый день.
      Я до конца не знаю цели задачи, но конкретно для этого урла можно сделать 301 редирект вот так:

      RewriteCond %{QUERY_STRING} ^.*title=article_name*
      RewriteRule ^(.*)$ http://%{HTTP_HOST}/articles/article.html? [R=301,L]

      или вот такой вариант, более предпочтительней может быть

      RewriteCond %{QUERY_STRING} ^.*title=article_name*
      RewriteCond %{REQUEST_URI} ^/index.php.*
      RewriteRule ^(.*)$ http://%{HTTP_HOST}/articles/article.html? [R=301,L]
  7. Алина:

    Спасибо вам за ваши труды, все доходчиво и понятно. Я не особо разбираюсь в htaccess взяла скопировала ваш код для гет параметров исправила переменную и все заработало. Я не сильно поняла как сделать 301 редирект, но зато то что вы дали работает, а значит дело сделанное и проблема решена.

  8. Аня:

    Проблема с redirect 301 index.php to / не решена с помощью вашего кода. Забросила все как вы описываете, но желаемого результата не получила.
    К вам можно обратиться за помощью?
    Сколько будет стоять сделать редирект с index.php на / ?

Сделать заказ
Онлайн помощь по WordPress