301 редирект (переадресация) через .htaccess – на все случаи жизни

Три важных совета и четырнадцать конкретных примеров установки 301 переадресации страниц через htaccess!

301 редирект

Советы

  • Располагайте переадресации страниц в файле от частных к более глобальным (сверху вниз). Например: простая переадресация двух страниц стоит выше, чем глобальное правило редиректов с www на без www.
  • Избегайте двух, трех и т.д. последовательных редиректов. Правила должны быть настроены так, что при возникновении редиректа он должен перенаправлять пользователя (робота) только один (!) раз. Каждое лишнее переадресация – это секунды драгоценного времени отдачи страницы, это нагрузка на сервер, это нечеткие команды для поисковых роботов.
  • Не забывайте, что многие браузеры кешируют (запоминают редиректы), поэтому проверять переадресации лучше на сайте — http://www.bertal.ru.

Правила переадресаций

1. 301 редирект с одной страницы на другую

Самый простой вариант

1
Redirect 301 /test-1/ http://site.ru/test-2/

Более подробный

1
2
RewriteCond %{REQUEST_URI} ^/test/$
RewriteRule ^.*$ http://site.ru/new-test/? [R=301,L]

2. 301 редирект с www на без www (главное зеркало – домен без www)

1
2
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]

3. 301 редирект с без www на www (главное зеркало – домен с www)

1
2
RewriteCond %{HTTP_HOST} ^([^www].*)$
RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]

4. 301 редирект со страниц со слешем на без слеша (весь сайт)

1
2
3
4
5
6
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} ![^\/]$
RewriteRule ^(.*)\/$ /$1 [R=301,L]

5. 301 редирект со страниц без слеша на слеш (часто в CMS системах устанавливается автоматически)

1
2
3
4
5
6
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]

6. Один (а не два последовательных!) 301 редирект на без www и с слешем на конце адреса страницы

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1/ [L,R=301]
 
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} ![^\/]$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
 
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^([^www].*)$
RewriteRule ^(.*)$ http://%1/$1/ [L,R=301]

7. Один (а не два последовательных!) 301 редирект на c www и со слешем на конце адреса страницы

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://www.%1/$1/ [L,R=301]
 
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^([^www].*)$
RewriteRule ^(.*)$ http://www.%1/$1/ [L,R=301]
 
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} ![^\/]$
RewriteCond %{HTTP_HOST} ^([^www].*)$
RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]

8. Один (а не два последовательных!) 301 редирект на c www и без слеша на конце адреса страницы

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
RewriteCond %{REQUEST_URI} ^\/$
RewriteCond %{HTTP_HOST} ^([^www].*)$
RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]
 
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} \/$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)\/$ http://www.%1/$1 [L,R=301]
 
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^([^www].*)$
RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]
 
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} \/$
RewriteCond %{HTTP_HOST} ^([^www].*)$
RewriteRule ^(.*)\/$ http://www.%1/$1 [L,R=301]

9. Один (а не два последовательных!) 301 редирект на без www и без слеша на конце адреса страницы

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
RewriteCond %{REQUEST_URI} ^\/$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
 
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} \/$ 
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)\/$ http://%1/$1 [L,R=301]
 
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
 
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} \/$
RewriteCond %{HTTP_HOST} ^([^www].*)$
RewriteRule ^(.*)\/$ http://%1/$1 [L,R=301]

10. 301 редирект только адреса site.ru/index.php (без GET параметров) на основное зеркало site.ru

1
2
3
RewriteCond %{REQUEST_URI} /index.php
RewriteCond %{QUERY_STRING} ^\z
RewriteRule ^(.*)$ http://site.ru/? [R=301,L]

11. 301 редирект всех адресов с index.php и GET параметрами на страницы только с GET параметрами (вырезать в url index.php)

Пример: типа site.ru/index.php?n=1 на site.ru/?n=1

1
2
RewriteCond %{REQUEST_URI} /index.php
RewriteRule ^(.*)$ http://site.ru/ [R=301,L]

12. 301 редирект для index.php, index.html или index.htm (например в Joomla), массовая склейка

1
2
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/ 
RewriteRule ^(.*)index\.(php|html|htm)$ http://site.ru/$1 [R=301,L]

13. 301 редирект url с GET параметрами (динамический URL) на статический

1 вариант (простой адрес с GET параметром)

1
2
RewriteCond %{QUERY_STRING} ^id=229
RewriteRule ^.*$ /supermodel/? [R=301,L]

2 вариант (со страницы и GET параметром)

1
2
3
RewriteCond %{REQUEST_URI} /test/
RewriteCond %{QUERY_STRING} ^id=229
RewriteRule ^.*$ /supermodel/? [R=301,L]

14. Все страницы одного домена на главную страницу другого домена

1
2
RewriteCond %{REQUEST_URI} (.*)
RewriteRule ^(.*)$ http://site.ru/ [L,R=301]

15. Каждая страница одного домена на такой же адрес другого url

1
2
RewriteCond %{REQUEST_URI} (.*)
RewriteRule ^(.*)$ http://site.ru/$1 [L,R=301]

16. Редирект с протокола http на https.

1
2
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Если возникает циклический редирект, то воспользуйтесь этим вариантом:

1
2
3
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

17. Редирект с протокола https на http.

Обратный редирект, если перестали использовать SSL сертификат.

1
2
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

UPDATE 02/11/2016

  • Алексей

    Огромное спасибо. Это самая полная статья о 301 редиректе, которую я видел. Отдельное спасибо за 12-й пункт.

    • Всё это накоплено за долгие годы 🙂

  • Ольга

    Огромное спасибо! Только сегодня этим озадачилась, сделала и допустила ошибку, которую исправила благодаря Вам: было 2 редиректа.

    • Пожалуйста! Заходите ещё — постараюсь и дальше делиться только полезным ))

  • Здравствуйте. Помогите найти ответ как организовать редирект с get параметрами. Пример: была страница http://site.ru/?catalog=1 я ее удалил и хочу сделать редирект для поисковиков и ссылающихся сайтов на новый урл http://site.ru/?catalog=2 Как в таком случае записывается код? Пробовал много вариантов, но решения не нашел!

    • Добрый вечер, тут всё просто, этот вариант мной описан в общем-то в пункте 12. Надо вот так:

      RewriteCond %{QUERY_STRING} ^catalog=1
      RewriteRule ^.*$ http://site.ru/?catalog=2 [R=301,L]

      • не срабатывает такой редирект(( возможно можно организовать При том что обычный организованный с меню сайта работает:
        Redirect 301 /razdel/ http://site.ru/?catalog=3 # редирект на каталог Распродаж
        Redirect 301 /teh/ http://site.ru/service/ # объединение раздела Сервис
        Redirect 301 /garant/ http://site.ru/service/ # объединение раздела Сервис

        А удаленный мною раздел доступен, как и любой другой url (пример http://site.ru/?catalog=0003), но таких разделов нет ни на сайте ни в базе данных, при этом они отдают код 200(( То ли это настройки сервера или может особенности php сайта (может функция какая не дописана) вот такая задача пока остается открыта.
        Скрин, каталог формируется по столбцу «id» — это рабочий первый раскрывающиеся раздел в каталоге с товарами, при этом если я введу site-ru/?catalog=* +число «parent» откроется именно пустой раздел столбца Категории «title».
        404 формируется только при непонятных символах.nu;j

        • Должно работать, я проверял и всегда использую такие конструкции! Пробовали разместить этот редирект в самый верх, первой командой? Стоит ли волшебная команда: RewriteEngine On

          Если все равно не работает — скиньте скрин файла .htaccess

          • Спасибо! действительно переместил вверх кода и заработало)) буду перенаправлять перемещенные разделы.
            Остается разобраться с дублями по коду 200

          • Редирект выполняется последовательно. Поэтому всегда надо формировать файл так, чтобы мелкие. частные редиректы шли раньше, чем какие-то большие и глобальные. Иначе до мелких может просто не добраться или создать много последовательных обработок.

            А что за админка, самописное что-то?

          • Да, сайт самописный 2006г, в админ только товары добавляться, настроек никаких нет, все в коде

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

          • Согласен! возможно переход на чпу исправит все проблемы дублей?

          • В программировании чудес не бывает, как реализуете — так и будет работать! 🙂

          • Guest

            согласен! возможно переход на чпу исправит все проблемы дублей?

  • Ganesh The Architect

    Подскажите пожалуйста, не работает редирект со старого имени урла на новый. В чем причина?

    RewriteCond %{REQUEST_URI} ^/production/$
    RewriteRule ^.*$ http://dobermanfilm.by/proizvodstvo-telereklamy? [R=301,L]

    • Добрый день, если троеточие поставлено только для того, чтобы сократить ссылку в урл для поста, то в остальном всё правильно и будет работать.

      • Ganesh The Architect

        Да, это сайт сократил ссылку при создании поста.

        Однако редирект не работает

        • а другие редиректы есть? команда RewriteEngine On есть в файле? Попробуйте поставьте редирект выше (одной из первых команд).

          • Ganesh The Architect

            Скриншот .htaccess: https://yadi.sk/i/YCt9tSAue7YFH
            К примеру забиваю: http://dobermanfilm.by/about
            В адресной получается вот так: http://dobermanfilm.by/para-slov-o-nas//?path=about
            Почему добавляется слэш второй не понимаю.

          • Если не считать, что тут два последовательных редиректа, которые лучше избежать, то в целом-то все нормально: http://c2n.me/3aUNyMk

            Важно помнить, что многие браузеры запоминают редиректы, поэтому проверять лучше специальными сервисами!

          • Ganesh The Architect

            Спасибо! И правда, в другом браузере открыл, редирект работает!

          • http://www.bertal.ru/ — отличный сайт для проверки ответов сервера сайта)

          • Ganesh The Architect

            Вот еще вопрос:

            Сайт переехал с домена ru на домен by

            Можете помочь, как грамотно написать редирект? Я написал как на скриншоте, но у меня к сожалению не работает редирект.

            https://yadi.sk/i/lOShw-Xae9nr4

          • Сейчас домен biznes-sank.ru вообще не отвечает никак (сервер не найден). Чтобы редирект работал — нужно домен привязать к какой-то папке (может быть к папке сайта на .by или другой) и там сделать редирект.

          • Ganesh The Architect

            Ясно, спасибо!

  • Елена Паленкова

    Здравствуйте. Помогите пожалуйста сделать чпу. Получилось сделать везде кроме категорий товаров. Так как тут присутствует амперсанд &. Вот с этого http://мойсайт/view_cat.php?cat=‘.strtolower($row[«brand_url»]).’&type=’.$row[«type»].’ нужно сделать вот это http://мойсайт/odezhda/platiya

    • Добрый день, Елена!
      Как-то так:

      RewriteRule ^([a-z]+)/([a-z]+)/$ view_cat.php?cat=$1&type=$2 [L]

  • Виктор Шевченко

    Огромное спасибо за совет по переносу редиректа повыше, чтобы он стал одним из первых команд после Rewrite Engine On. До этого никак не мог запустить. А Вы не знаете сколько строчек по счету вниз читает модуль? У меня достаточно много редиректов и строчек обьяснения к ним, прийдется удалять… 🙁

    • Виктор, добрый день! На сколько я знаю, нет ограничений по количеству символов или строк. Но не стоит забывать, что можно использовать регулярные выражения или если, например, надо сделать переадресацию миллионов товаров, то реализовать ее программно, а не серверно.

  • Guest

    Огромное спасибо за совет по переносу редиректа повыше, чтобы он стал одним из первых команд после Rewrite Engine On. До этого никак не мог запустить. А Вы не знаете сколько строчек по счету вниз читает модуль? У меня достаточно много редиректов и строчек обьяснения к ним, прийдется удалять… 🙁

  • Сергей

    Спасибо за статью! А кто может подсказать как реализовать чтобы если вводим домен без www открывался текущий сайт, а если вводим с www то была переадресация на другой домен, но только главной страницы (index.html)?

    • Добрый день, Сергей.

      Да, достаточно просто: проверка по хосту, проверка по урл и куда направляем в таком случае:

      RewriteCond %{HTTP_HOST} ^www.(.*)$
      RewriteCond %{REQUEST_URI} /index.html
      RewriteRule ^(.*)$ http://newsite.ru/ [R=301,L]

  • Даня Шуваев

    А скажите как из my-site. ru/composition.php?nazvanie=asd

    сделать my-site. ru/composition.php/nazvanie/asd или my-site. ru/composition/nazvanie/asd сохраняя гет параметры

    • Я не очень понял задачу) но для того, чтобы сервер сохранял GET параметры — не нужно писать ? у адреса, куда перенапраляем )

  • Алексей Чекурский

    Подскажите чайнику как прописать 301-й редирект.

    СТАРЫЙ ЛИНК: http://www.рек-арт.рф/index.php?option=com_content&view=article&id=48&Itemid=225

    НОВЫЙ ЛИНК: http://www.рек-арт.рф/products/pos-materialy-oformlenie-mest-prodazh/mobilnye-stendy.html

    • RewriteCond %{QUERY_STRING} ^option=com_content&view=article&id=48&Itemid=225
      RewriteRule ^.*$ /products/pos-materialy-oformlenie-mest-prodazh/mobilnye-stendy.html? [R=301,L]

  • Дмитрий

    Подскажите, пожалуйста: есть страницы на сайте с адресом:
    site.ru/info/
    site.ru/info/1/
    site.ru/info/2/
    site.ru/info/3/

    Надо чтобы был редирект:
    site.ru/info/ -> site.ru/tools/

    Но при этом вложенные страницы, с site.ru/info/2/ не перенаправлялись на site.ru/tools/2/ а оставались так же на site.ru/info/2/.

    • тут всё просто — используйте первую конструкцию в моей статье
      RewriteCond %{REQUEST_URI} ^/info/$
      RewriteRule ^.*$ http://site.ru/tools/? [R=301,L]

  • Даня Шуваев

    Подскажите плз как преобразовать
    СТАРЫЙ ЛИНК: site.ru/soch.php?naz=GETпеременная
    в
    НОВЫЙ ЛИНК: site.ru/soch/naz/GETпеременная

  • Джоан Ватсон

    Допустим основное зеркало sait.ru. Оно доступно под адресами
    http://www.sait.ru

    sait.ru/index.php

    sait.ru/index.html

    http://www.sait.ru/index.php

    http://www.sait.ru/index.html

    Если я в файле .htaccess настрою редирект с
    http://www.sait.ru на sait.ru — оно будет автоматом редиректить страницы
    http://www.sait.ru/index.php и http://www.sait.ru/index.html на sait.ru??

  • Marius Danius

    Здравствуйте! Подскажите, пожалуйста: был сайт http://www.site.ru, позже на этот домен поместили обновленную версию сайта, а старый теперь носит имя http://www.old.site.ru

    на том и другом сайте представлен одинаковый товар. но львиная доля страниц (к примеру,с карточками товаров) не отображается, т.к. им в силу изменения cms и структуры присвоен другой адрес. выходит, редирект с каждой старой страницы на новую необходимо прописывать вручную, варианта с глобальной переадресацией нет?

    • Если вы хотите, чтобы с карточки на карточку вела переадресация, то ее надо делать вручную. Но если вам просто все страницы старого домена слить на главную, то достаточно поставить один редирект.

      Но вообще, переадресация нужна, с поддомена old, если он проиндексирован поиском, если же нет, то делать это не нужно. Другой вопрос, что есть ли в индексе старые адреса для основоного домена, стоят ли на эти адреса ссылки. Тогда вам нужно в рамках основного домена сделать переадресацию «старый урл» — «на новый урл». Но тут видимо только руками можно.

      • Marius Danius

        Спасибо! Выходит, переадресацию нужно будет задавать в рамках домена site.ru? Для этого подойдет первая конструкция, приведенная в Вашей статье?

        • Да.
          Суть редиректа в рамках одного домена в чем:
          1. сообщить роботу, что старые страницы доступны по новым адресам
          2. перенаправить пользователей (со ссылок или из непереиндексированной выдачи) на новые страницы.

          Но если поддомен old тоже проиндексирован, то с него переадресацию сделать необходимо (чтобы склеить). Плюс закрыть от индексации.

          • Marius Danius

            Еще раз спасибо.

  • Сергей Иванов

    Здравствуйте! Помогите склеить зеркало http://сайт/ru?option=com_virtuemart с сайтом

    • Сергей, пункт 12, пример 1. Только вместо адреса страницы во второй строчке — поставьте главную)

  • Лилия Ишкаева

    Здравствуйте! Пожалуйста подскажите, что не так сделала? Сайт переехал на новый домен, старый домен не продлевала. Редирект не работает. https://yadi.sk/i/oHt105RpfLk39

    • Лилия, для того, чтобы редирект работал, необходимо продлить домен и настроить DNS записи на ваш хостинг! Иначе его могут купить конкуренты 🙂

      • Лилия Ишкаева

        Андрей, спасибо за ответ. Домен продлила. Хостинг один и тот же. Сам редирект теперь верный? Что-то еще делать надо , я имею ввиду редирект. Через год , что, опять старый домен продлевать?)

        • Ага, работает.
          тут на ваш выбор, если есть, например, ссылки какие-то на старый домен, то можно проливать вечно) если терять абсолютно нечего, то через год можно и забить)

          • Лилия Ишкаева

            Спасибо

  • Сергей

    Добрый день. Не могу найти 301 редирект со страниц без слеша на слеш, ваши варианты тоже не подошли, можете помочь? Ниже предоставляю свой файл .htaccess

    AddDefaultCharset UTF-8
    DirectoryIndex index.php

    Options All -Indexes

    Header set Cache-Control «max-age=43200»

    Header set Cache-Control «max-age=604800»

    Header set Cache-Control «max-age=2592000»

    Header unset Cache-Control

    ExpiresActive On
    ExpiresDefault «access plus 5 seconds»
    ExpiresByType image/x-icon «access plus 2592000 seconds»
    ExpiresByType image/jpeg «access plus 2592000 seconds»
    ExpiresByType image/png «access plus 2592000 seconds»
    ExpiresByType image/gif «access plus 2592000 seconds»
    ExpiresByType application/x-shockwave-flash «access plus 2592000 seconds»
    ExpiresByType text/css «access plus 604800 seconds»
    ExpiresByType text/javascript «access plus 604800 seconds»
    ExpiresByType application/javascript «access plus 604800 seconds»
    ExpiresByType application/x-javascript «access plus 604800 seconds»
    ExpiresByType text/html «access plus 43200 seconds»
    ExpiresByType application/xhtml+xml «access plus 600 seconds»

    php_value post_max_size 80M
    php_value upload_max_filesize 50M

    ErrorDocument 404 http://mir-gardin.com.ua/404.php
    RewriteEngine on

    RewriteCond %{HTTP_HOST} ^mir-gardin.com.ua$ [NC]

    RewriteBase /
    RewriteRule ^.htaccess$ — [F]

    RewriteRule ^admin/$ /admin/index.php [L]
    RewriteRule ^admin/promotion$ /admin/promotion.php [L]
    RewriteRule ^admin/promotion/$ /admin/promotion.php [L]
    RewriteRule ^admin/services$ /admin/services.php [L]
    RewriteRule ^admin/services/$ /admin/services.php [L]
    RewriteRule ^admin/main$ /admin/main.php [L]
    RewriteRule ^admin/main/$ /admin/main.php [L]
    RewriteRule ^admin/catalog$ /admin/catalog.php [L]
    RewriteRule ^admin/catalog/$ /admin/catalog.php [L]
    RewriteRule ^admin/contacts$ /admin/contacts.php [L]
    RewriteRule ^admin/contacts/$ /admin/contacts.php [L]
    RewriteRule ^admin/news$ /admin/news.php [L]
    RewriteRule ^admin/news/$ /admin/news.php [L]
    RewriteRule ^admin/about_us$ /admin/about_us.php [L]
    RewriteRule ^admin/about_us/$ /admin/about_us.php [L]
    RewriteRule ^admin/pay$ /admin/pay.php [L]
    RewriteRule ^admin/pay/$ /admin/pay.php [L]
    RewriteRule ^admin/reviews$ /admin/reviews.php [L]
    RewriteRule ^admin/reviews/$ /admin/reviews.php [L]
    RewriteRule ^admin/our_works$ /admin/faq.php [L]
    RewriteRule ^admin/our_works/$ /admin/faq.php [L]
    RewriteRule ^admin/producers$ /admin/producers.php [L]
    RewriteRule ^admin/producers/$ /admin/producers.php [L]
    RewriteRule ^admin/fotogallery$ /admin/fotogallery.php [L]
    RewriteRule ^admin/fotogallery/$ /admin/fotogallery.php [L]
    RewriteRule ^admin/header$ /admin/header.php [L]
    RewriteRule ^admin/header/$ /admin/header.php [L]
    RewriteRule ^admin/menu$ /admin/menu.php [L]
    RewriteRule ^admin/menu/$ /admin/menu.php [L]
    RewriteRule ^admin/options_lr$ /admin/options_lr.php [L]
    RewriteRule ^admin/options_lr/$ /admin/options_lr.php [L]
    RewriteRule ^admin/modules$ /admin/modules.php [L]
    RewriteRule ^admin/modules/$ /admin/modules.php [L]
    RewriteRule ^admin/footer$ /admin/footer.php [L]
    RewriteRule ^admin/footer/$ /admin/footer.php [L]
    RewriteRule ^admin/per_page$ /admin/per_page.php [L]
    RewriteRule ^admin/per_page/$ /admin/per_page.php [L]
    RewriteRule ^admin/rights$ /admin/rights.php [L]
    RewriteRule ^admin/rights$ /admin/rights.php [L]
    RewriteRule ^admin/user_data$ /admin/user_data.php [L]
    RewriteRule ^admin/user_data/$ /admin/user_data.php [L]
    RewriteRule ^admin/user_files$ /admin/user_files.php [L]
    RewriteRule ^admin/user_files/$ /admin/user_files.php [L]
    RewriteRule ^admin/meta$ /admin/meta.php [L]
    RewriteRule ^admin/meta/$ /admin/meta.php [L]
    RewriteRule ^admin/fav$ /admin/fav.php [L]
    RewriteRule ^admin/fav/$ /admin/fav.php [L]
    RewriteRule ^admin/files$ /admin/files.php [L]
    RewriteRule ^admin/files/$ /admin/files.php [L]
    RewriteRule ^admin/articles$ /admin/articles.php [L]
    RewriteRule ^admin/articles/$ /admin/articles.php [L]

    RewriteRule ^$ /index.php [L]
    #RewriteRule ^404$ /404.php [L]

    RewriteRule ^registration$ /registration.php [L]
    RewriteRule ^registration/$ /registration.php [L]
    RewriteRule ^userpanel$ /userpanel.php [L]
    RewriteRule ^userpanel/$ /userpanel.php [L]
    RewriteRule ^forgot_password$ /forgot_password.php [L]
    RewriteRule ^forgot_password/$ /forgot_password.php [L]

    RewriteRule ^feedback$ /feedback.php [L]
    RewriteRule ^feedback/$ /feedback.php [L]

    RewriteRule ^about_us$ /about.php [L]
    RewriteRule ^about_us/$ /about.php [L]

    RewriteRule ^articles$ /articles.php?page=1 [L]
    RewriteRule ^articles/$ /articles.php?page=1 [L]
    RewriteRule ^articles/page$ /articles.php?page=1 [L]
    RewriteRule ^articles/page/$ /articles.php?page=1 [L]
    RewriteRule ^articles/page/([0-9]+)/? /articles.php?page=$1 [L]

    RewriteRule ^articles/topic/(.*)/? /view_article.php?id=$1 [L]

    RewriteRule ^cart$ /cart.php [L]
    RewriteRule ^cart/$ /cart.php [L]

    RewriteRule ^catalog$ /catalog.php?page=1 [L]
    RewriteRule ^catalog/$ /catalog.php?page=1 [L]
    RewriteRule ^catalog/page$ /catalog.php?page=1 [L]
    RewriteRule ^catalog/page/$ /catalog.php?page=1 [L]
    RewriteRule ^catalog/page/([0-9]+)/? /catalog.php?page=$1 [L]

    RewriteRule ^catalog/category/(.*)/page/([0-9]+)/? /catalog_by_cats.php?cat=$1&page=$2 [L]
    RewriteRule ^catalog/category/(.*)? /catalog_by_cats.php?cat=$1&page=1 [L]

    RewriteRule ^catalog/subcategory/(.*)/page/([0-9]+)/? /catalog_by_subcats.php?cat=$1&page=$2 [L]
    RewriteRule ^catalog/subcategory/(.*)? /catalog_by_subcats.php?cat=$1&page=1 [L]

    RewriteRule ^catalog/view/(.*)/? /view_item.php?id=$1 [L]

    RewriteRule ^catalog/view_all/(.*)/view/(.*)/? /view_all.php?type=$1&cat=$2 [L]
    RewriteRule ^catalog/view_all/(.*)? /view_all.php?type=all&cat=0 [L]

    RewriteRule ^contacts$ /contacts.php [L]
    RewriteRule ^contacts/$ /contacts.php [L]

    RewriteRule ^our_works$ /faq.php [L]
    RewriteRule ^our_works/$ /faq.php [L]

    RewriteRule ^news$ /news.php?page=1 [L]
    RewriteRule ^news/$ /news.php?page=1 [L]
    RewriteRule ^news/page$ /news.php?page=1 [L]
    RewriteRule ^news/page/$ /news.php?page=1 [L]
    RewriteRule ^news/page/([0-9]+)/? /news.php?page=$1 [L]

    RewriteRule ^news/topic/(.*)/? /view_news.php?id=$1 [L]

    RewriteRule ^pay$ /pay.php [L]
    RewriteRule ^pay/$ /pay.php [L]

    RewriteRule ^producers/(.*)/page/([0-9]+)/? /producers.php?id=$1&page=$2 [L]
    RewriteRule ^producers/(.*)? /producers.php?id=$1&page=1 [L]
    RewriteRule ^producers$ /producers.php [L]
    RewriteRule ^producers/$ /producers.php [L]

    RewriteRule ^reviews$ /reviews.php [L]
    RewriteRule ^reviews/$ /reviews.php [L]

    RewriteRule ^search/(.*)/? /search.php?word=$1 [L]

    RewriteRule ^services$ /services.php [L]
    RewriteRule ^services/$ /services.php [L]

    RewriteRule ^thanks$ /thanks.php [L]
    RewriteRule ^thanks/$ /thanks.php [L]

    RewriteCond %{HTTP_HOST} ^www.mir-gardin.com.ua$ [NC]
    RewriteRule ^(.*)$ http://mir-gardin.com.ua/$1 [R=301,L]

    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/
    RewriteRule ^index.php$ http://mir-gardin.com.ua/ [R=301,L]

    • Сложно сказать, так-то всё нормально выглядит, разместите ближе к концу файла. Проверяйте через bertal.ru, в браузере часто кэшируются редиректы.

      • Сергей

        Доброй ночи. Сделал, спасибо. Только редирект вставил сразу после RewriteEngine on. А не подскажете еще редирект с большой буквы на маленькую.

        • Хороший вопрос! Но я ответа на него не знаю, попробую поискать)

  • Валерий

    Добрый день, Андрей. Спасибо за инструкции в статье. Сделал редирект страниц старого сайта на новый. Редирект работает, но на новом сайте появилась ошибка в одном пункте многоуровневого меню — вместо страниц, выдает ошибку 404. Появляется она, если добавить редирект на главную страницу типа: Redirect 301 /partners/ http://site.org/ А суть ошибки в следующем: при открытии страницы вместо адреса http://site.org/services/partners/page пытается перейти на http://site.org/partners/page — т.е. пропадает один уровень меню. Все остальные меню и вообще все ссылки нормально работают. Подскажите пожалуйста, как побороть ошибку. Спасибо.

    • Добрый день, Валерий. Надо просто использовать строгое соответствие.

      RewriteCond %{REQUEST_URI} ^/partners/$
      RewriteRule ^.*$ http://site.ru/? [R=301,L]

      Просто иначе — редирект работает для всех страниц, где есть включение слова partners!

      • Валерий

        Андрей, спасибо огромное! Все отлично работает!!! Благодарю за точные формулировки. 🙂

        • Пожалуйста, рекламируйте блог друзьям))

  • Алекс

    Здравствуйте, подскажите пожалуйста как сделать редирект с одной страницы https на эту же но http?

    • Алекс, простите, не заметил вопроса! Наверное, проблему давно решили, но я добавил 14 и 15 пункты.

  • Денис Ремишевский

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

    • Что получилось, это хорошо. Ошибка в том, что два слеша? Без просмотра кода невозможно определить, в чем проблема! если еще не решили — присылайте)

  • lenysya023

    Здравствуйте подскажите пожалуйста! Нужно сделать так чтобы ссылка на главную страницу site.ru/ перенаправлялась на site.ru … На данный момент обе страницы дают ответ сервера 200. При этом вложенные страницы со слешэм типа site.ru/catalog/ нормально редиректятся на страницы без слэша. Уже всю голову сломала…

    • На самом деле, на это можно забить уже, практически нигде такой редирект просто не реализовать. Для главного домена — наличие или отсутствие слеша — непринципиально, на сколько я знаю.

  • lenysya023

    И еще можно вопрос….Есть дубли главной страницы сайта типа site.ru/?N, где N-любая буква маленькая. Чтобы убрать эту дубли я прописала такой код

    RewriteCond %{QUERY_STRING} [a-z]$

    RewriteRule ^(.*)$ http://artelbook.ru/$1? [L,R=301]

    Но возникла проблема перестал работать поиск там ссылка имеет вид site.ru/search?keyword=запрос&limitstart=0&option=com_virtuemart&view=category

    Пробывала делать ограничения типа

    RewriteCond %{REQUEST_URI} ^/keyword/$

    Не работает…может Вы знаете решение. Буду очень благодарна. Заранее спасибо

    • Ограничения надо через восклицательный знак:

      RewriteCond %{REQUEST_URI} !search
      RewriteCond %{QUERY_STRING} [a-z]$
      RewriteRule ^(.*)$ http://artelbook.ru/$1? [L,R=301]

      • lenysya023

        Спасибо большое за ответы, Андрей. Но все равно не работает…редиректит на главную и все. Хоть убейся….

        http://artelbook.ru/search?keyword=gg&limitstart=0&option=com_virtuemart&view=category

        HTTP/1.1 301 Moved Permanently
        Server: nginx/1.6.3
        Date: Thu, 11 Jun 2015 19:24:24 GMT
        Content-Type: text/html; charset=iso-8859-1
        Connection: keep-alive
        Location: http://artelbook.ru/index.php

        HTTP/1.1 301 Moved Permanently
        Server: nginx/1.6.3
        Date: Thu, 11 Jun 2015 19:24:24 GMT
        Content-Type: text/html; charset=iso-8859-1
        Connection: keep-alive
        Location: http://artelbook.ru/

        HTTP/1.1 200 OK
        Server: nginx/1.6.3
        Date: Thu, 11 Jun 2015 19:24:24 GMT
        Content-Type: text/html; charset=utf-8
        Connection: keep-alive
        Vary: Accept-Encoding
        X-Powered-By: PHP/5.3.29
        Set-Cookie: 5894f5492b139f8853dd2a78e980e1f8=c0d0e662d2108b4f8ca09d65eee15a9c; path=/
        Set-Cookie: sj_bakery_tpl=sj_bakery; expires=Tue, 31-May-2016 19:24:24 GMT; path=/

        • lenysya023

          А вот сам htaccess файл…может, что подскажите…Заранее спасибо.
          RewriteEngine On
          RewriteCond %{REQUEST_URI} !index.php?option=com_xmap&view=xml&tmpl=component&id=1
          RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/
          RewriteRule ^index.php$ http://artelbook.ru/ [R=301,L]
          RewriteCond %{REQUEST_URI} !search
          RewriteCond %{QUERY_STRING} [a-z]$
          RewriteRule ^(.*)$ http://artelbook.ru/$1? [L,R=301]
          RewriteCond %{QUERY_STRING} base64_encode[^(]*([^)]*) [OR]
          RewriteCond %{QUERY_STRING} (|%3E) [NC,OR]
          RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
          RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
          RewriteRule .* index.php [F]
          RewriteRule .* — [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
          RewriteCond %{REQUEST_URI} !^/index.php
          RewriteCond %{REQUEST_URI} /component/|(/[^.]*|.(php|html?|feed|pdf|vcf|raw))$ [NC]
          RewriteCond %{REQUEST_FILENAME} !-f
          RewriteCond %{REQUEST_FILENAME} !-d
          RewriteRule .* index.php [L]
          php_value display_errors 1

          • На сколько я понимаю, можно попробовать добавить
            RewriteCond %{REQUEST_URI} !search после 2 строки снизу и перед — RewriteCond %{REQUEST_FILENAME} !-d

            Но так немного сложно, без попытки протестить. Если хотите, за символические деньги, я настрою сам)))

  • Appstore Apps

    привет!!! как сделать редирект вот в таком случай

    http://byttehnika.kz/bytovaya-tekhnika/televizory/?start=12 с этого URL на этот http://byttehnika.kz/category/bytovaya-tekhnika/televizory-audio-video/televizory

    первый удален но позиция в гугл важна для меня что делать и как быть ???

    • привет!

      так все просто:

      RewriteCond %{REQUEST_URI} /bytovaya-tekhnika/televizory/
      RewriteCond %{QUERY_STRING} ^start=12
      RewriteRule ^.*$ /category/bytovaya-tekhnika/televizory-audio-video/televizory? [R=301,L]

      • Appstore Apps

        спасибо!!! работает)

  • Александр Данилин

    сломал голову об все это… несколько тупых вопросов можно?

    1 вопрос

    11ый пример не вырезает ВСЕ index.php, он редиректит http://site.ru/page1/index.php на http://site.ru

    как сделать чтобы он именно вырезал из URL index.php?

    2 вопрос

    мне достался сайт со структурой

    /index.php
    /page1.php
    /page2.php

    я применил вот такую конструкцию

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteRule ^(.*)/$ $1.php

    и получил структуру вида
    /page1/
    /page2/

    но при этом редиректа не происходит, страницы вида /page1.php по прежнему доступны.

    пробовал

    RewriteRule ^(.*)/$ $1.php [L,R=301]

    вообще не работает!

    • Добрый день, а вопрос еще актуален? Не заметил его раньше )

      • Александр Данилин

        да, вполне актуально…

        • завтра тогда попробую ответить на вопросы)

          • Александр Данилин

            Спасибо!

  • Андрей Головопроломофф

    Добрый день. Я читал, что нагружать htaccess большим количеством редиректов не рекомендуется. Мне достался сайт с корявыми до невозможности урлами. Никакими другими средствами, кроме такого редиректа, мне урлы не сохранить. Скажите 650 редиректов 301 — это много для сайта?

    заранее спасибо!

    • Андрей, добрый день. На мой взгляд, нормально. В конец концов, сделайте, посмотрите, будет ли тормозить сервер, нормально ли открывается сайт.

  • Старинный Автомобиль

    Добрый день. Подскажите, если сайт переходит на ЧПУ адреса, это значить, что все страницы нужно редиректить? (сайт — интернет-магазин (около 20к страниц))

    • Добрый день! Если у сайта были позиции, то лучше всего сделать постраничный редирект: карточка товара -> на новую карточку товара, категория -> на новую категорию и т.д. Но для 20k страниц лучше сделать не серверный редирект в htaccess, а по средствам php, например. Так проще и для поисковика хорошо.

  • Сергей Семушин

    Здравствуйте. Знает кто, как сделать редикрет с site.ru/123/bla-bla-bla на site.ru/?123/bla-bla-bla (что бы добавлялся вопросительный знак и страница передавалась get-параметром)? Заранее спасибо.

    • Добрый день, Сергей.

      Как-то так:

      RewriteCond %{REQUEST_URI} ^/123/bla-bla-bla/$
      RewriteRule ^(.*)/$ http://site.com/?$1 [R=301,L]

  • Александр

    Добрый день. Переношу сайт с одной cms на другую, адрес сайта остается прежним. Сейчас некоторые страницы имеют адрес
    http://домен.ru/katalog/katalog2/velosipedu.html?tab=detskie
    http://домен.ru/katalog/katalog2/velosipedu.html?tab=gornue
    на новом сайте настроены русский ЧПУ
    http://домен.ru/детские-велосипеды/
    http://домен.ru/горные-велосипеды/
    Как сделать редирект? Делать буду для каждой страницы 500-600шт?

    • OPIS.PRO

      Александр, на самом деле, лучше использовать ЧПУ латинскими буквами, это надежнее как роботу, так и пользователю. Да через htaccess редирект на русские буквы сделать не получится, вроде как.

      Но в любом случае да, необходимо делать редиректы со старых на новые. Если позиций нет особых, то можно просто сделать один редирект со всех страниц старых на главную, если есть, что терять, тогда надо прописывать 500-600 штук.

    • Александр, на самом деле, лучше использовать ЧПУ латинскими буквами, это надежнее как роботу, так и пользователю. Да через htaccess редирект на русские буквы сделать не получится, вроде как.

      Но в любом случае да, необходимо делать редиректы со старых на новые. Если позиций нет особых, то можно просто сделать один редирект со всех страниц старых на главную, если есть, что терять, тогда надо прописывать 500-600 штук.

  • Юрий Жигалов

    Добрый день. Подскажите пожалуйста. Нужно сделать редирект с http://secretslife.ru/?p=793 на http://secretslife.ru/ Как это сделать?

  • sasha

    здравствуйте

    суть проблемы такая: редирект с www на без www работает.

    так же работает редирект RewriteRule ^(.*)index.php$ $1 [R=301,L].

    но не работает редирект с одной страницы на другую, например,: Redirect 301 /index.php/ http://qargva.com/index_ru.php/

    вот мой файл .htaccess:

    RewriteEngine On

    RewriteBase /

    RewriteCond %{HTTP_HOST} ^www.qargva.com$ [NC]

    RewriteRule ^(.*)$ http://qargva.com/$1 [R=301,L]

    RewriteRule ^(.*)index.php$ $1 [R=301,L]

    Redirect 301 /index.php/ http://qargva.com/index_ru.php/

    помогите разобраться, пожалуйста

    спасибо

  • sasha

    вопрос снят. разобрался

    отсутствовала строка Options +FollowSymlinks

    • Отлично! Главное — выдержать паузу 🙂

  • ko100fey

    Здравствуйте,

    Помогите, пожалуйста, настроить редирект. Мне нужно чтобы с sitename.com/?query=(любой запрос) переадресовывало на sitename.com/new_dir/?query=(введенный ранее запрос). Попробовал сделать как описано в п. 12

    RewriteCond %{QUERY_STRING} ^query=.
    RewriteRule ^.*$ /new_dir/ [R=301,L]

    Оно вроде как и работает, но не так как нужно. Т.е, мне нужно чтобы было четкое совпадение sitename.com/?query=(любой запрос) . А в примере, как я написал, оно срабатывает даже если вводить sitename.com/redirect.php?query=(любой запрос) и даже sitename.com/any_dir/?query=(любой запрос).

    Всю голову уже сломал. Ничего не выходит.

    • Добрый день, совершенно некогда было помогать решать чужие задачки)) надеюсь, что Вы справились))

  • Alexey

    Добрый день!
    Можно ли сделать одним правилом, что бы при запросе страницы http://www.site.com/login как без слеша на конце, так и со слешем http://www.site.com/login/ — перекидывало на http://www.site.com/user/

    • Можно) И наверное уже всё сделали))

  • Евгения Вержбицкая

    День добрый, Андрей! Прошу у Ваc совета( вот был сайт, написан вручную и заканчивался каждый файл этого сайта расширением .html. А тут решил хозяин сайта перевести этот сайт на WP. Нашли тему подходящую и почти в точности перекопировали контент со старого сайта на новый, который разместили в тестовом режиме под новым доменным имененем на бесплатный хостинг. Урлы (за исключением доменного имени) тоже постарались повторить. И тут то случилось страшное!!!! Чтобы урл НЕ изменился надо в WP «Постоянная ссылка: http://site/about/» поставить http://site/about.html (без слэша) НО!!! случается маленький нюанс! WP преобразует .html в
    -html, то есть в дефис и доставляет слэш. Сайту 10 лет, рейтинг, ТИЦ и все такое( Как то победить и насильно проставить точку никак не могу( Многие советуют решить вопрос 301 редиректом. А я не пойму как, что и куда редиректить, ведь идея была просто подменить одни файлы другими(

    • Евгений, наверное, Вы уже решили свои вопросы. Если не получается сохранить урлы, то надо организовать 301 редирект с одной страницы на другую, т.е. со строго адреса на новый. Чтобы дать и пользователю, и роботу понять, что страница просто «переехала».

    • Ой, Евгения ) извините))

  • Олег

    объясните логику этой директивы
    RewriteCond %{REQUEST_URI} ![^/]$
    ! и ^ делают одну и туже работу, указывают на то, что символы не должны там быть. Получает %{REQUEST_URI} не должен содержать [не должен содержать /]. Почему просто не указать
    RewriteCond %{REQUEST_URI} /$
    То есть %{REQUEST_URI} в конце строки содержит слеш?
    Или вот так
    RewriteCond %{REQUEST_URI} (.*)/$

    • Олег, можно. Если работает — то можно использовать и другие варианты. Я на абсолютную истину не претендую.

  • Олег

    Что значит вот эта директива?

    RewriteCond %{QUERY_STRING} ^z
    Начало строки начинается с z? И зачем его экранировать, я это ведь не спецсимвол?

    • Это значит, что строка GET параметров пустая) редиректим только index.php

  • Привет! К сожалению, нет ни одно сайта на wix. Так что помочь не могу. Может быть кто-то другой знает. А к ним в поддержку обращался?

  • Kairat

    Необходимо настроить 301
    редирект со страницы-дубля на страницу-оригинал: http://t-d.kz/ru/index http://t-d.kz/

    не поможете

  • Stas

    Помогите составить редирект.

    Раньше ссылки были такого вида:

    http://lik-astana.kz/index.php/ru/informatsionnoe-oformlenie-interera/kuvertki.html

    Теперь такие:

    http://lik-astana.kz/informatsionnoe-oformlenie-interera/kuvertki.html

    Скажите как редиректить ссылки с index.php/ru/

  • Михаил

    Помогите настроить 301

    http://сайт.ru/item/статья

    чтобы было http://сайт.ru/статья
    как только не пробовал но не получилось

  • Vernal

    В инете практически нет дельных советов, как же правильно настроить 301 редирект не только с главной старого сайта на главную нового сайта.

    К тому же, нет конкретных советов, как сделать корректный 301 редирект с КАЖДОЙ СТРАНИЦЫ старого сайта на ТАКУЮ ЖЕ СТРАНИЦУ нового сайта!

    Вы могли бы (будете просто первопроходцем…) здесь написать как сделать точно и полностью ИМЕННО В ОДНОМ БЛОКЕ ЗАПРОСА регулярных выражений в .htaccess файле:

    1. 301 редирект с главной старого сайта на главную нового сайта.
    2. 301 редирект каждой страницы старого сайта на ТАКУЮ ЖЕ СТРАНИЦУ нового сайта.

    Пожалуйста, очень ждем.

  • znet

    В htacess лезть боюсь без помощи программиста) Правлю его через функционал плагина Yoast SEO на WordPress-сайтах