Как сделать 301 редирект htaccess (redirect 301 index.php to /). 301 редирект htaccess wordpress
301 редирект (переадресация) через .htaccess – на все случаи жизни
Три важных совета и четырнадцать конкретных примеров установки 301 переадресации страниц через htaccess!
Советы
- Располагайте переадресации страниц в файле от частных к более глобальным (сверху вниз). Например: простая переадресация двух страниц стоит выше, чем глобальное правило редиректов с www на без www.
- Избегайте двух, трех и т.д. последовательных редиректов. Правила должны быть настроены так, что при возникновении редиректа он должен перенаправлять пользователя (робота) только один (!) раз. Каждое лишнее переадресация – это секунды драгоценного времени отдачи страницы, это нагрузка на сервер, это нечеткие команды для поисковых роботов.
- Не забывайте, что многие браузеры кешируют (запоминают редиректы), поэтому проверять переадресации лучше на сайте — http://www.bertal.ru.
Правила переадресаций
1. 301 редирект с одной страницы на другую
Самый простой вариант
1 | Redirect 301 /test-1/ http://site.ru/test-2/ |
Redirect 301 /test-1/ http://site.ru/test-2/
Более подробный
1 2 | RewriteCond %{REQUEST_URI} ^/test/$ RewriteRule ^.*$ http://site.ru/new-test/? [R=301,L] |
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] |
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] |
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] |
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] |
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] |
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] |
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] |
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] |
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] |
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] |
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] |
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] |
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] |
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] |
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] |
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] |
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] |
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] |
RewriteCond %{HTTPS} =on RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
UPDATE 02/11/2016
web-optimizator.com
Как сделать 301 редирект htaccess (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 редирект", теперь попробуем применить его к задачи немного посложнее. Редирект с главной на главную без зацикливания.
Redirect 301 index.php to /
Для 301 редиректа с index.php нужно использовать немного другой код, вот такого плана:
RewriteCond %{THE_REQUEST} ^.*/index\.phpRewriteRule ^(.*)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 не приводят ни к какому результату, тогда нужно сделать такие действия в последовательности:
- Очистить куки браузера. Для этого в Mozilla Firefox надо зайти в "Инструменты" - "Настройки" - "Приватность" - "Очистить недавнею историю"
- Проверяем не заработал ли наш код.
- Проверяем работает наш файл htaccess или нет, для этого достаточно закинуть такой код RewriteRule ^(.*)$ / [R=301,L] на вашем сайте должна появится ошибка типа "зацикливание редиректа страницы" или любая похожая. (Если вы не увидели ошибки, то нужно написать в техническую поддержку)
- Смотрим, возможно другое правило перекрывает наше. Меняем место вызова редиректа 301, возможно ниже или выше наш код заработает.
- Если никак не получается сделать redirect 301 через htaccess, то нам нужна php переадресация, делаем ее.
Если вам нужна помощь, напишите свой вопрос в комментариях или в этой контактной форме.
Жмите лайк, если эта статья вам помогла решить проблему:
Комментарии к записи «Как сделать 301 редирект htaccess (redirect 301 index.php to /)»:
help-wp.ru
30+ примеров настройки 301 редиректа в .htaccess
Популярные примеры правильной настройки 301 редиректа в файле .htaccess. Советы по добавлению редиректов.
Полезные советы
- Современные браузеры по умолчанию используют кеширование для редиректов. Чтобы проверить работу редиректа необходимо очистить кеш в браузере или использовать любой сторонний сервис по проверке кода ответа сервера.
- Нежелательно создавать цепочки редиректов. При медленной работе сервера это вызовет недовольство пользователя. Поисковые роботы также не любят последовательные редиректы - вес исходной страницы может не передаться.
- При составлении файла .htaccess простые директивы должны идти раньше сложных, которые распространяются на весь сайт. Такая компоновка будет более удобной при работе с файлом и поможет избежать путаницы.
Наиболее популярные правила
Приведенные примеры работают для серверов функционирующих на APACHE, для NGINX настройки в файле .htaccess работать не будут. В примерах используется %{QUERY} - так обозначается часть URL, которая следует после знака вопроса. Правила для редиректа срабатывают только при условии соответствия правилу указанному в редиректе.
При настройке правила редиректов в файле .htaccess все правила необходимо указывать после указанных двух строк, либо просто добавьте их:
Options +FollowSymLinks RewriteEngine On301 редирект все страниц без WWW на страницы с WWW
RewriteCond %{HTTP_HOST} ^mysite\.ru$ [NC] RewriteRule ^(.*)$ http://www.mysite.ru/$1 [R=301,L]Обратный редирект со страниц с WWW на страницы без WWW
RewriteCond %{HTTP_HOST} ^www.mysite\.ru$ [NC] RewriteRule ^(.*)$ http://mysite.ru/$1 [R=301,L]301 редирект с одной страницы на другую
Redirect 301 /oldpage.html http://mysite.ru/newpage.htmlПереадресация для разделов через RewriteRule
RewriteRule ^papka /papka-new/$1 [R=301,L]301 редирект для страниц имеющих Get-параметры в URL
Для наглядности примера допустим адрес страницы имеет вид http://mysite.ru/catalog/index.php?IBLOCK_ID=5&SECTION_ID=15. Следующее правило будет делать переадресацию:
RewriteCond %{QUERY} ^IBLOCK_ID=5&SECTION_ID=15$ [NC] RewriteRule ^catalog/index\.php$ /newcatalog/? [R=301,L]Иногда необходимо настроить редирект для изменяющихся Get-параметров, например в текущем примере динамическим параметром будет SECTION_ID:
RewriteCond %{QUERY} ^IBLOCK_ID=5&SECTION_ID=(.*)$ [NC] RewriteRule ^catalog/index\.php$ /newcatalog/? [R=301,L]Переадресация со страниц без значения Get-параметра
Например адрес страницы имеет вид - http://mysite.ru/?addon, тогда редирект будет следующим:
RewriteCond %{QUERY} ^addon$ [NC] RewriteRule ^$ /? [R=301,L]Переадресация одного адреса, без вложенных адресов
Например довольно часто необходимо настроить переадресацию со страницы раздела http:/site.ru/razdel/, однако прочие страницы в данном разделе должны работать без редиректа, например страница http://mysite.ru/razdel/section.php?SECTION_ID=1. Для этого нужно добавить всего один символ - $.
RewriteRule ^razdel/$ http://mysite.ru/new-razdel/ [R=301,L]Настройка кириллических доменов .РФ
Правила и логика работы с доменами на кириллице абсолютно такие же, единственным отличием является замена символов кириллицы на специальный код.
301 редирект с одного домена на другой
RewriteCond %{HTTP_HOST} ^oldmysite\.ru$ [NC] RewriteRule ^(.*)$ http://newmysite.ru/$1 [R=301,L]Правило для доменов .РФ
RewriteCond %{HTTP_HOST} ^xn-...\.xn--p1ai$ [NC] RewriteRule ^(.*)$ http://mysite.ru/$1 [R=301,L]Редирект на папки со слешем на конце
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !\..{1,10}$ RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*)$ http://mysite.ru/$1/ [L,R=301]Редирект на папку без слеша - убираем слеш на конце
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^(.+)/$ RewriteRule ^(.+)/$ http://www.site.ru/$1 [R=301,L]Переадресация с домена в папку другого сайта
RewriteCond %{HTTP_HOST} ^oldsite\.ru$ [NC] RewriteRule ^(.*)$ http://newsite.ru/oldsite/ [R=301,L]Редирект со всех страниц кроме определенной папки
Для примера возьмем в исключение папку панели администратора в CMS Bitrix
RewriteRule ^bitrix/ /bitrix/admin/ [L,R=301] RewriteRule ^(.*)$ http://mysite.ru/ [L,R=301]Переадресация всех файлов папки на конкретный файл
RewriteRule ^papka(.*)$ /my-file.html [L,R=301]Переадресация файлов папки на другой файл с исключением
RewriteRule ^papka/file.html /new-file.html [L,R=301] RewriteRule ^papka(.*)$ /my-file.html [L,R=301]Редирект замены расширений файлов - с html на php
RedirectMatch 301 (.*)\.html$ http://newsite.ru$1.phpУказываем порядок загрузки индексных файлов в корне
DirectoryIndex index.php index.html index.htm index.shtmlРедирект с index.php на корень сайта
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://mysite.ru/ [R=301,L]Редирект всех индексных страниц на корень
RewriteRule ^(.*)index\.php$ http://mysite.ru/$1 [R=301,L]Переадресация с поддомена на основной домен
RewriteCond %{HTTP_HOST} ^abc.mysite.ru$ [NC] RewriteRule ^(.*)$ http://mysite.ru%{REQUEST_URI} [R=301,NC,L,QSA]Редирект страницы из различных директорий
Если в разных папках сайта лежит файл с одинаковым названием, то настроить переадресацию этих файлов на один.
RewriteRule [^abc]/nash-file.php /nash-file.php [R=301,L]Создаем ЧПУ-копию динамических страниц
Для страницы появится обычный URL без передачи Get-параметров.
RewriteRule ^catalog/okno/?$ /firma/okna/detail.php?ID=123 [NC,L]Переадресация с https на http
Необходимое правило для решения проблемы с дублями страниц в поисковых системах.
RewriteCond %{HTTPS} "on" RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]Настройка ответа 403 для спама по REFERER
Данное правило позволяет не пускать на сайт спамный трафик с других сайтов:
RewriteCond %{HTTP_REFERER} ref-spam-site.ru [NC,OR] RewriteCond %{HTTP_REFERER} another-ref-spam.ru [NC] RewriteRule .* - [F]Обработка ошибки 404 в .htaccess
Для поисковых систем очень важно получать код ответа 404 для несуществующих страниц
ErrorDocument 404 /404-for-me.phpОсобенности настройки
Следует помнить, что все правила выполняются в .htaccess в порядке следования их в файле, поэтому необходимо следить за очередностью правил.
Избегайте цепочек редиректов, когда от старой до новой страницы осуществляется посещение еще одной страницы. Цепочки переадресаций негативно влияют на доверие пользователей и поисковых систем.
Включение редиректа для определенных User Agent
Например редирект на мобильную версию для планшетов и смартфонов:
RewriteCond %{HTTP_USER_AGENT} (iPad|ipad|iphone|iPhone|ipod|iPod|android|midp|j2me|symbian|series\ 60|symbos|windows\ mobile|windows\ ce|ppc|smartphone|blackberry|mtk|bada|windows\ phone) [NC] RewriteRule (.*) http://m.mysite.ru/ [L,R=301]Настройка редиректов для всех поисковых роботов
RewriteCond %{HTTP_USER_AGENT} !(accoona|ia_archiver|antabot|ask\ jeeves|baidu|dcpbot |eltaindexer|feedfetcher|gamespy|gigabot|googlebot |gsa-crawler|grub-client|gulper|slurp|mihalism|msnbot|worldindexer |ooyyo|pagebull|scooter|w3c_validator|jigsaw|webalta|yahoofeedseeker |yahoo!\ slurp|mmcrawler|yandexbot|yandeximages |yandexvideo|yandexmedia|yandexblogs|yandexaddurl|yandexfavicons |yandexdirect|yandexmetrika|yandexcatalog|yandexnews |yandeximageresizer) [NC] RewriteRule (.*) http://no-rank-site.ru/ [L,R=301]Синтаксис и символы
- . — Точка означает любой символ.
- [abc] — перечень символов, совпадающих с буквами a, b, или с.
- [^abc] — перечень символов, не входящих в диапазон. Условию соответствует любой символ, кроме a, b, с.
- * — предыдущий символ может повторяться 0 и более раз.
- [abc]* — найти символы из заданного набора идущие подряд.
- [^abc]* — обратная операция.
- .* — замена любого набора символов. ".*" — найти все подстроки между кавычками.
- ^ — обознает начало строки (при использовании в начале выражения).
- $ — конец строки.
- \w — буква, цифра или подчёркивание _.
- \d — любая цифра.
- \D — любой символ, кроме цифр.
- [0-9] — указание на любую цифру.
- [a-z] — указание на любую букву от a до z с нижним регистром.
- [A-Z] — указание на любую букву от A до Z с верхним регистром.
- [a-zA-Z] — любая буква от a до Z, регистр не важен.
- [a-Z] — тоже самое, только короче.
Флаги для доп. опций
- NC — NoCase отключает проверку регистра символов при срабатывании правила.
- R — Redirect останавливает изменение URL-адреса и возвращает результат. Самое популярное значение R=301, однако встречаются и другие для временных редиректов (302, MOVED TEMPORARY).
- L — Last останавливает создание URL-адреса и строка считается окончательной.
canwas.ru
Настраиваем 301 редирект при помощи файла .htaccess
Редирект – это способ переадресации пользователей и поисковых роботов на URL адрес, который отличается от первоначально запрошенного. Существует несколько видов переадресации, некоторые из которых приведены ниже.
301 Moved Permanently
301 – постоянный редирект, который указывает на то, что запрашиваемая страница находится по новому адресу, а старый нужно считать устаревшим. Такой вид редиректа передает 90-99% ссылочной массы на новый URL.
Канонизация или склейка домена
Для склейки домена с www на без www:
RewriteCond %{HTTP_HOST} ^www.site\.com$ [NC] RewriteRule ^(.*)$ http://site.com/$1 [R=301,L]Для склейки домена с без www на с www:
RewriteCond %{HTTP_HOST} ^site\.com$ [NC] RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]Для правильного выбора метода склейки нужно рассмотреть такие факторы:
- У какого варианта выше индексация;
- У какого варианта выше позиции в выдаче;
- Канонизация слэша в конце адреса.
При создании проекта сайта нужно решить, использовать ли слэш в конце адреса. Для поисковых систем адреса вида:
- http://www.site.com/category1
- http://www.site.com/category1/
Являются разными URL. Поэтому когда решите, какого вида будут адреса у вас на сайте, нужно прописать такой код для того, чтобы убрать слэш в конце:
RewriteCond %{HTTP_HOST} (.*) RewriteCond %{REQUEST_URI} /$ [NC] RewriteRule ^(.*)(/)$ $1 [L,R=301]или такой, чтобы добавить его:
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*[^/])$ $1/ [L,R=301]Для редиректа 301 одной страницы на другую:
Redirect 301 /oldpage.html http://www.site.com/newpage.htmlЧтобы убедиться, что при запросе любой версии главной страницы, к примеру: default.htm или index.html, будет произведен редирект на каноничную страницу http://www.site.com, нужно прописывать следующий код редиректа:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*(default|index|main)\.(html|php|htm)\ HTTP/ [NC] RewriteRule ^(([^/]+/)*)(default|main|index)\.(html|php|htm)$ http://www.site.com/$1 [L,R=301]Редирект каталога
Если в адресе у вас отображается структура каталога, то при изменениях у вас будет менять и адрес. Поэтому нужно прописывать такой редирект:
RewriteRule ^(.*)/old-catalog/(.*)$ $1/new-catalog/$2 [R=301,L]Но бывает так, что адрес старого каталога отображается сразу после доменного имени, например www.site.com/old-catalog/. В этом случае используется такой код:
RewriteRule old-catalog /(.*) / old-catalog /$1 [R=301,L]Редирект при изменении расширения файлов
При смене CMS обычно меняется только расширении файлов. Для канонизации страниц в этом случае нужно использовать код вида:
RedirectMatch 301 (.*)\.php$ http://www.site.com$1.htmlРедирект при появлении нескольких слэшей или тире
По разным причинам бывает, что в адресе появляются лишние слэши или тире, например www.site.com/catalog////page-1.html. Такие страницы нужно переадресовывать на адреса с одним слэшем www.site.com/catalog/page-1.html.
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ RewriteRule . %1/%2 [R=301,L]Таким же образом убираются и лишние тире в адресе, например изменение www.site.com/catalog/page—1.html на www.site.com/catalog/page-1.html.
RewriteCond %{REQUEST_URI} ^(.*)—(.*)$ RewriteRule . %1-%2 [R=301,L].htaccess — лишние слэши после имени домена
- http://site.com//////catalog
Чтобы убрать все эти слэши так, чтобы было перенаправление на страницу без слэшей, т.е.
Нужно прописать:
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ RewriteRule . %1/%2 [R,L]Генерация 301 редиректов
Если технических знаний для написания собственного кода не хватает, то есть специальные сервисы генерации всех основных редиректов:
Здесь вы можете, вставив свои данные, мгновенно получить нужный код. Поддерживаются редиректы для доменов, url адресов, каталогов.
Как проверить 301 редирект?
После внесения любых изменений в логическую часть редиректа, нужно проверять его работоспособность. Для мануальной проверки нужно:
- Проверить работает ли вообще сайт – зайти на его главную страницу;
- Побродить по сайту, его разделам и отдельным страницам.
Но есть и сервисы для автоматической проверки редиректа:
Правила использования 301 редиректа vs Canonical
Поисковая система Google устанавливает четкие правила, только при соблюдении которых, она будет верно трактовать ваши действия. Вот как буквально понимают поисковики 301 и Canonical:
- 301 редирект – данная страница является устаревшей, новая страница находится по адресу такому-то. Прошу удалить старую страницу из индекса, а новую проиндексировать и полностью передать на нее весь вес старой.
- Canonical – кроме этой версии страницы у меня есть еще и другие. Но ты, пожалуйста, индексируй только ту, на которой стоит Canonical. Другие версии будут лежать для того, чтобы их могли просматривать люди, но тебе включать их в индекс не нужно. Весь вес стоит передавать именно на страницу с Canonical.
Предпочтения по использованию редиректа 301
Обычно, это наиболее предпочтительный метод:
- Для отдельных страниц – если навсегда изменился ее адрес;
- Для доменов – если сайт будет находиться постоянно на новом домене;
- Для страниц 404 и страниц с контентом, который более не актуален. К примеру, при удалении товара из каталога можно сделать редирект на похожий по функциям товар или на страницу каталога с этим типом товаров.
Когда лучше не использовать редирект 301
- Если их реализация невозможна или она займет неоправданно много времени.
- Если контент дублируется на двух страницах, но обе они должны быть доступны пользователю ввиду некоторых отличий (к примеру, размера одежды).
- Если одна страницы имеет несколько URL (сортировка каталога по разным критериям).
- Для кросс-доменов, когда контент на двух адресах может дублироваться, но он должен быть на каждом из доменов.
lucky-seo.com
Редирект 301 в htaccess, как настроить правильную переадресацию или 301 redirect
Редирект 301 или301 Permanent Redirect — это правило, которое автоматически переадресовывает пользователя на другой адрес страницы. С его помощью вы можете склеить старые страницы с новыми или перенести сайт на другой домен, убрать многие дубли с сайта и многое другое. Крайне полезная вещь — поэтому нужно научиться делать его правильно!
Так же при 301 редиректе происходит склейка тИЦ (читаем что такое тиц) и PR — т.е. вы можете сохранить старое значение на новом адресе. Вы можете нисколько не потерять в глазах поисковых систем. Давайте перейдем от теории к практике.
Как настроить 301 редирект в htaccess
Файл под названием .htaccess находится в главной категории вашего сайта. Это служебный файл, в котором мы будем указывать правила склейки. Открываем файл блокнотом (рекомендую notepad++, чтобы не было проблем с кодировкой). Не забывайте, что это один из важных пунктов в работе SEO специалиста.
Общий шаблон для .htaccess, которым мы будем пользоваться:
Options +FollowSymLinks RewriteEngine On #Здесь указываем правилаВсе правила записываются в виде:
RewriteCond [Сравнение] [Условие] [Флаги] RewriteCond [Сравнение] [Условие] [Флаги] RewriteRule [Шаблон] [Подстановка] [Флаги]Теперь непосредственно займемся переадресацией и разберем конкретные примеры.
Я уже писал статью про склейку зеркал сайта, но на всякий случай здесь обобщу, чтобы вам было удобнее пользоваться страницей.
Примеры использования 301 редиректа
Редирект с index.php на главную
Чтобы настроить его вам нужно прописать в вашем файле следующий код, который будет перенаправлять посетителей с адреса site.ru/index.php на site.ru:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP RewriteRule ^index\.php$ http://site.ru/ [R=301,L]Если вам так же нужно сделать переадресацию с index.html, то просто в коде выше замените .php на .html
Склеиваем алиасы сайта
Если у вас несколько доменов и вы хотите все их перенаправлять на основной сайт, то используем:
RewriteCond %{HTTP_HOST} ^vash-sait.com$ [OR,NC] RewriteCond %{HTTP_HOST} ^www.vash-sait.com$ [NC] RewriteCond %{REQUEST_URI} !^/robots.* RewriteRule ^(.*)$ http://vash-sait.ru/$1 [R=301,L]Обратите внимание на первые 2 строки, там указано зеркало в зоне .com, если у вас иная или несколько зон, то добавляем правила.
Редирект с www на без www
Этот способ я уже описывал ранее, но повторюсь. Для того, чтобы склеить зеркала и выбрать основным домен без www прописываем:
RewriteCond %{HTTP_HOST} ^www.site\.ru$ [NC] RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]Редирект с домена без www на домен с www
Это действие противоположное предыдущему, только основное зеркало здесь www.site.ru:
RewriteCond %{HTTP_HOST} ^site\.ru$ [NC] RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]301 редирект страниц со слэшем и без
Это еще один вид дублей, тут мы склеим страницы site.ru/category/ и site.ru/category, как видите, в конце второго урла не стоит слэша:
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^(.+)/$ RewriteRule ^(.+)/$ /$1 [R=301,L]Если вам нужно наоборот оставить слэш в конце урла, то вам нужен данный вариант:
RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*[^/])$ $1/ [L,R=301]Если у вас по какой-то причине появились урлы типа site.ru/category//article.html, то юзаем код:
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ RewriteRule . %1/%2 [R=301,L]где, «//» можно заменить на «—» или любые сдвоенные символы в урле.
Массовая замена категории
Бывает, что вы переименовали категорию, а за ней закреплены тысячи урлов. Чтобы не состарится во время написания тысяч одинаковых перенаправлений юзаем:
RewriteRule ^(.*)/old-category/(.*)$ $1/new-category/$2 [R=301,L]Если у вас категория идет сразу после домена (типа site.ru/category/), то используем другой вариант:
RewriteRule old-category /(.*) / old-category /$1 [R=301,L]Редирект на новую страницу
Самый простой редирект со страницы на страницу, для это просто пропишите так:
Redirect 301 /old-post.html http://new-site.ru/new-post.htmlГде old-post.html — это ваша старая страница, а new-site.ru/new-post.html — это новая страница и она может быть на любом домене (включая ваш текущий домен).
Редирект для url с параметрами
Страницы с параметрами редиректятся сложнее, возьмем пример http://site.ru/page.php?sort=articles. Параметр здесь «sort=articles». Код будет следующим:
RewriteCond %{QUERY_STRING} sort=articles RewriteRule .* http://site.ru/page.php? [R=301,L]Работаем с расширениями
Убираем .html из url (для удаления .php не забудьте заменить $1.html на $1.php):
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.html [L]Меняем .php на .html в урлах и наоборот (не забываем поменять местами в коде):
RedirectMatch 301 (.*)\.php$ http://www.site.com$1.htmlПравильный 301 редирект на новый домен
Этот пункт я выделил отдельно, т.к. он больше связан с переносом на другой домен. Тут есть важный момент, это не упустить директиву по правке роботса — она указана на 3 строке кода.
RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC] RewriteRule ^([^/]+) $1 [L] RewriteCond %{HTTP_HOST} ^site\.ru RewriteRule ^(.*)$ http://new-site.ru/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^www.site\.ru RewriteRule ^(.*)$ http://new-site.ru/$1 [R=301,L]С помощью таких не хитрых махинаций мы избавимся от дублей страниц, тем самым улучшив нашу внутреннюю оптимизацию и соответственно качество сайта.
Если у вас появились какие-то вопросы, пишите в комментарии — будем разбираться 🙂
romanus.ru
Редирект 301 в htaccess -
Недавно у меня появилась необходимость со страниц одного сайта сделать перенаправление на другой. Причем не всех страниц (что проще), а половины.
Если у вас возникла такая же или похожая ситуация, то вам поможет Redirect 301.
Редирект представляет собой перенаправление пользователей с одного веб-сайта на другой, которое происходит автоматически.
При этом не стоит путать 301 и 302 редирект. 301-ый сообщает поисковым системам, что старый адрес больше не используется, а 302-ой говорит о том, что URL временно не используется, и может когда-нибудь снова появиться.
Как сделать 301 Редирект
Если ваш сайт (как и большинство) работает на web-сервере Apache, то можно сделать переадресацию через коды скрипта файлов текстовой конфигурации: htaccess или httpd.conf. Чаще используется файл htaccess, переадресацию я делала с его помощью, и поэтому рассмотрим его подробнее.
- Итак, первым делом мы заходим в панель управления сайтом (cPanel). И идем в «Диспетчер файлов».
- Находим нужную нам папку с сайтом и ищем среди файлов .htaccess.
- Открываем его с помощью редактора исходного кода.
- Теперь в этот файл текстовой конфигурации нужно прописать следующее:
Options +FollowSymLinks
RewriteEngine on
Тем самым мы включим модули: Apache mod_rewrite и ReWriteEngine в модуле mod_rewrite. Также это можно сделать в php.ini.
Естественно, это всё можно сделать на локальном компьютере с помощью блокнота, а затем скопировать содержание в файл .htaccess.
Существует несколько типов сценариев переадресации. Рассмотрим их.
301 редирект с одной страницы на другую
Для этого нужно вставить следующую строчку в файл .htaccess. Внимание: вы прописываете свой сайт!
Redirect 301 /staraya-stranica.html http://domen.ru/novaya-stranica.html
Например, «перенесем» на этот сайт страницу «vsem-privet».
Redirect 301 /vsem-privet http://stacyblog.ru/vsem-privet
Если ваши страницы с префиксом, то прописываем его, если нет (как у меня), то нет.
Минус этого способа в том, что нужно прописывать каждую страницу, если их у вас много.
301 редирект всех файлов на другой адрес
Если вы не переименовывали директорию, то ставим код:
RedirectMatch 301 ^/staroe-nazvanie/ http://stacyblog.ru/staroe-nazvanie/
Если же переименовывали, то:
RedirectMatch 301 ^/staroe-nazvanie/ http://stacyblog.ru/novoe-nazvanie/
301 редирект с одного домена на другой
Когда переносим сайт с одного доменного имени на другое, то используем код:
RedirectMatch 301 ^(.*)$ http://stacyblog.ru
301 редирект с домена без www на домен с www
Если вы хотите перенести домен stacyblog.ru на www.stacyblog.ru, то нам нужно:
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
Редирект 301 с www на без www
Для переноса www.stacyblog.ru на stacyblog.ru нужно:
RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
Теперь вам осталось только протестировать сайт и проверить всё ли правильно работает.
stacyblog.ru
Редирект 301 через .htaccess - как правильно настроить
Редирект 301 - зачем он нужен? В процессе продвижения сайта может возникнуть ситуация, когда необходимо изменить url страницы. Причины тому могут быть разные: переезд на новый домен, склейка дублей страниц, или даже, не к ночи будут помянуты, санкции поисковых систем. Чтобы изменить url, используется перенаправление, правильно называющееся «301 Permanent Redirect».
Что такое 301 редирект?
301 redirect действует на постоянной основе, передает со старой страницы на новую ссылочный вес, ТИЦ сайта и PR. Также, если сайт находится в каталоге Яндекс или DMOZ, страниц нового сайта в нем, разумеется, не будет. Помимо этого, используется 301 редирект на другой сайт, и перенаправление с одной версии сайта на другую. В частности так избавляются от проблем при индексации, возникающих из-за дублирования страниц сайта.
Избавление от дублей страниц также называют канонизацией.
Как настроить 301 редирект
При использовании некоторых CMS (систем управления контентом, или «движков» сайта) редирект можно настроить при помощи специальных плагинов. Однако более распространена практика настройки 301 редиректа посредством внесения изменений в файл .htaссess.
Несколько примеров использования 301 редиректа
Cклеивания зеркал сайта
Для поисковой системы site.name и www.site.name – разные сайты. Один из них будет проиндексирован, второй же окажется дублем. Чтобы подобного не произошло, делают так называемое «склеивание» сайта. С сайта с «www» указывается перенаправление на сайт без «www». Это делается в файле .htaccess, с помощью следующей конструкции:
RewriteEngine On RewriteCond %{HTTP_HOST} ^www.vash-sait\.ru$ [NC] RewriteRule ^(.*)$ http://vash-sait.ru/$1 [R=301,L]Если на начальном этапе этого не было сделано, и в индекс попала версия сайта с «www», стоит сделать обратное перенаправление.
RewriteEngine On RewriteCond %{HTTP_HOST} ^vash-sait\.ru$ [NC] RewriteRule ^(.*)$ http://www.vash-sait.ru/$1 [R=301,L]Перенаправление на страницу с другим url
При использовании ЧПУ ссылок иногда возникает ситуация, когда url необходимо изменить, но исходная страница уже находится в индексе. Чтобы не потерять позиции и вес при изменении ссылки, стоит установить перенаправление с исходной ссылки с на измененную.
RewriteEngine On RewriteRule ^(.*)url.html$ http://vash-sait.ru/new-url.html [R=301,L]Перенаправление на другой домен
В ситуации, когда необходимо сменить домен, это можно сделать без потерь позиций и веса. Для этого нужно установить 301 редирект со старого домена на новый.
RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.staryy-sait\.ru$ [NC] RewriteRule ^(.*)$ http://novyy-sait.ru/$1 [L,R=301] RewriteCond %{HTTP_HOST} ^staryy-sait\.ru$ [NC] RewriteRule ^(.*)$ http://novyy-sait.ru/$1 [L,R=301]Редирект алиасов на основной домен сайта
Если для сайта используется несколько доменов (алиасов), зарегистрированных в разных доменных зонах, то во избежание дублирования контента, нужно установить 301 редирект на основной домен.
RewriteEngine On RewriteCond %{HTTP_HOST} ^vash-sait.com$ [OR,NC] RewriteCond %{HTTP_HOST} ^www.vash-sait.com$ [NC] RewriteCond %{REQUEST_URI} !^/robots.* RewriteRule ^(.*)$ http://vash-sait.ru/$1 [R=301,L]Убираем расширение с помощью 301 редиректа
Страницы, доступные по ссылкам с разными расширениями также признаются дублями. К примеру, есть страницы, с расширением .html и без него. Если вам нужно убрать его:
RewriteEngine on RewriteRule ^(([^/]+/)*[^.]+)$ /$1.html [L]Перенаправление с index.php на главную
В некоторых случаях, главная страница сайта доступна по нескольким адресам одновременно. Это также негативно сказывается на продвижении, так как говорит о дублировании контента. Избавиться от этого можно, применив следующую конструкцию:
RewriteEngine On RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://vash-sait.ru/ [R=301,L]Страницы, в url которых встречается слеш, и страницы, в которых этого символа нет, также могут быть признаны дублями. Следующим кодом устанавливается перенаправление со страниц без слэша на страницы со слэшем:
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^(.+)/$ RewriteRule ^(.+)/$ /$1 [R=301,L]Редирект для url с параметрами
Если исходный адрес содержит какой-либо параметр (например, http://vash-sait.ru/articles.php?section=1. Параметр здесь "section=1" ), то перенаправляющая конструкция будет иметь следующий вид:
RewriteEngine On RewriteCond %{QUERY_STRING} section=1 RewriteRule ^index.php http://vash-sait.ru/articles.php? [R=301,L]Полезное видео по теме:
Стоит ли использовать 301 редирект при санкциях поисковых систем
Бытует распространенное мнение, что при попадании сайта под санкции или, как их еще называют, фильтры поисковых систем, для выхода из-под них достаточно перенести сайт на другой домен, и настроить 301 редирект. К сожалению, это не совсем так. Когда-то перенаправление на новый домен действительно помогало спастись от фильтров. Однако уже при следующем обновлении алгоритмов это было учтено. Сайт действительно уходит из-под фильтра, но только на период одного-двух обновлений. В дальнейшем санкции, наложенные на сайт на старом домене, обязательно передадутся и новому, если не будет предпринято никаких мер.
Перенаправление с помощью 301 редиректа – действенный, удобный и полезный инструмент при оптимизации сайта, и устранении недоработок и ошибок на сайте. Тем не менее, использовать его нужно аккуратно. В том случае, если вы не вполне осознаете, какие последствия может понести за собой использование редиректа, для работ над сайтом лучше привлечь специалистов.
acades.by