Записи с меткой "301 редирект"
100+ SEO-подсказок от Дэвида Максвини
Часть 1: Разметка и структура сайта


<a href="http://www.example.com/" rel="nofollow">платная ссылка</a>
Часть 2: Подбор ключевых слов


-
Насколько сильна конкуренция – показываются ли такие авторитетные сайты, как Amazon, Forbes и т.д.?
-
Сколько ссылок ведут на топовые сайты?
-
Сдвигается ли органическая выдача вниз энциклопедическими графами, новостями, рекламными объявлениями и т.д. (см. ниже)?




Часть 3. Теги Title

<title>Это тег title</title>
Часть 4. Теги Description

<meta name="description" content="Это тег description. Он поможет вашему контенту выделиться в результатах поиска и повысить CTR"/>

Часть 5: Теги заголовков

Часть 6: Контент




Часть 7: Убираем все лишнее

<link rel="canonical" href="http://example.com/the-defacto-version-of-the-page/">
<meta name="robots" content="noindex, follow">
Часть 8: Опыт взаимодействия


Часть 9. Инструменты для веб-мастеров

Part 10: Google Analytics

Часть 11: Скорость загрузки сайта

Часть 12: Оптимизация изображений

<img src="photo-of-a-clown.jpg" alt="фото клоуна" /><img src="1550111.jpg" alt="" />Часть 13: Наращивание ссылочной массы



Часть 14: Социальные медиа

Часть 15: Восстановление после санкций

Часть 16: Продвижение контентом

Часть 17: СЕО-уборка

Часть 18: Общие SEO-советы и рекомендации

301 редирект в файле .htaccess
Перенаправляет все содержимое каталогов https:// site.ru/dir1/group1/group2/ → в https:// site.ru/dir2/group1/group2/
RewriteCond %{REQUEST_URI} ^/dir1/(.*)$
# если строка начинается с /dir1/
RewriteRule ^(.*)$ /dir1%1 [R=301,L]
RewriteRule ^reviews/nashi-dovolnye-klienty/.+$ /reviews/nashi-dovolnye-klienty/ [L,R=301,NC]
RewriteRule ^reviews/video-otzyvy/.+$ /reviews/video-otzyvy/ [L,R=301,NC]
RewriteRule ^reviews/o-nas-pishut/.+$ /reviews/o-nas-pishut/ [L,R=301,NC]
RewriteRule ^promotions/.+$ /promotions/ [L,R=301,NC]
RewriteCond %{REQUEST_URI} ^(.*)/ru/products/receivers/(.*)$
RewriteRule ^(.*)$ %1/ru/products/vintovye-kompressory-dalgakiran/receivers/%2 [R=301,L]
Перенаправляет все содержимое каталогов /catalog/dir1/group1/group2/ → в /catalog/dir2/group1/group2/
RewriteCond %{REQUEST_URI} ^(.*)/dir1/(.*)$
# если строка содержит /dir1/
RewriteRule ^(.*)$ %1/dir2/%2 [R=301,L]
Перенаправить все урлы с начинающиеся с dir1 на dir2 с сохранением дальнейшей структуры URL
Дополнительная информация.
301 редиректы в .htaccess. Список шаблонов
htaccess — это конфигурационный файл веб-сервера Apache, позволяющий управлять работой веб-сервера и настройками сайта с помощью различных параметров (директив) без изменения основного конфигурационного файла веб-сервера.
Важная информация!
-
После настройки глобальных правил редиректов (любые перенаправления, кроме редиректа со страницы на страницу) ставьте задачу на разработчика по проверке форм и корзины. Так как часто ломаются формы и клиент не получает заказы
-
Не правьте файл .htaccess через административную панель сайта (админку), так как если сайт ляжет, то вы не сможете ничего править
Правила по настройке файла
Правило №1. Написанное ниже нужно вставить в самое начало .htaccess
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
Правило №2. В начале мелкие редиректы, потом глобальные
В начале файла .htaccess всегда идут постраничные редиректы (редирект с страницы на страницу), потом с раздела на раздел, а уже после глобальные правила (такие как с http на https, с www на без www и прочее).
Правило №3. Если что-то написано в #, то оно не учитывается
Если вы в начале любого правила напишите #, то такой редирект не сработает, так как он просто не будет учитываться. С помощью # пишите комментарии, чтобы другой SEO-специалист понял что за редирект вы сделали
Правило №4. Создайте копию на компьютере перед редактированием
Убедитесь в том, что вы сохранили у себя на ПК резервную копию оригинального файла .htaccess, прежде чем вносить какие-либо изменения, чтобы можно было вернуть обратно.
Правило №5. Просто посмотрите на примере
Чтобы стало понятно что мы тут понаписали, проще увидеть пример и мы подготовили его для вас с подробным описанием.
Редирект с 1 страницы сайта на другую
#Обычный редирект с страницы сайта на другую
Redirect 301 /old-stranitsa https://site.ru/new-stranitsa
#Редирект с 1 страницы на другую на
MODX RewriteRule ^old-page/$ new-page/ [R=301,NC,L]
#Редирект с 1 страницы сайта на другую в OpenCart
RewriteCond %{QUERY_STRING} ^_route_=old-page/old-page/$ RewriteRule ^(.*)$ https://my-site.com/new-page/new-page/? [R=301,L]
#Редирект с 1 страницы на другую для URL и домена на кириллице на URL на латинице
Redirect 301 /ru/product/старая-страница/ https://xn--b1aghu1a.xn--p1acf/ru/product/novaya-stranicza/
Редиректы, если в URL есть пробел
Чтобы в .htaccess работал редирект с пробелами ссылку нужно заключать в кавычки (без спецсимволов), т.е:
#Для WordPress и прочих CMS
Redirect 301 "/old page" "https://site.ru/new-stranitsa" #Для сайтов на MODX
RewriteRule "^/?old-page/montazh cherepiczy instrukc$" "https://site.ru/new-page/" [R=301,L]
Редиректы с домена на домен
#Редирект с главной страницы на другой домен
RewriteEngine On RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ https://site.ru/ [L,R=301] #Редирект с домена на домен
RewriteEngine On RewriteCond %{HTTP_HOST} old-site.ru
RewriteRule (.*) https://new-site.ru/$1 [R=301,L]
Редиректы для URL с GET-параметрами
#Редирект делает редиректы с страниц типа: ?product_id=858
RewriteCond %{QUERY_STRING} (?:^|&)^product_id\=858(?:$|&)
RewriteRule ^index\.php$ /catalog/new_page? [L,R=301] #Редирект с GET-параметрами
RewriteCond %{QUERY_STRING} (^|&)product_cat\=uncategorized($|&)
RewriteRule ^$ /katalog #Настройка редиректа с GET-параметром c страницы на страницу #url до параметра
RewriteCond %{REQUEST_URI} ^/component/virtuemart/$ #то, что после параметра (вместо ?= ставится ^)
RewriteCond %{QUERY_STRING} ^page=shop.browse&category_id=12 #новый url RewriteRule ^.*$ /arenda-gruzovogo-avto.html? [R=301,L]
Редирект страниц на https-версию
#Вариант №1
RewriteEngine On RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] #Вариант №2
RewriteEngine On RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Если не сработало, попробуйте варианты, которые указаны ниже
RewriteEngine On
RewriteCond% {HTTPS} off
RewriteRule (. *) Https: //% {HTTP_HOST}% {REQUEST_URI} [R = 301, L] RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L] RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Редирект для слешей (/)
Убираем повторяющиеся слеши (/) в URL
RewriteCond %{THE_REQUEST} //
RewriteCond %{QUERY_STRING} !http(s|)://
RewriteRule .* /$0 [R=301,L]
Редирект с множественных слешей (/////) и http на 1 слеш (/) и https
RewriteCond %{THE_REQUEST} //
RewriteRule .* /$0 [R=301,L]
Редирект с множественных слешей (/////) и на без слеша (/)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]
Автоматическая подстановка слеша (/) в конце адреса.
*Ставьте задачу на разработчика на проверку форм обратной связи после настройки, так редирект может ломать формы и могут не приходить заявки с сайта
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
Добавляем слеш(/), если его нет, и это не файл.
*Не добавляйте на сайты на Elementor (WordPress)
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..+$
RewriteCond %{REQUEST_URI} ^(.+)$
RewriteRule ^(.*)$ $1/ [L,R=301]
Переадресация с www на без www и наоборот
Перенаправление домена с www на без www
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
Редирект без www на версию с www
RewriteCond %{HTTP_HOST} ^site\.ru$ [NC]
RewriteRule ^(.*)$ https://www.site.ru/$1 [R=301,L]
Перенаправление домена с www на без www, если домен на русском
RewriteEngine On RewriteCond %{HTTP_HOST} ^www.xn--80adaxca8c.xn--p1ai$ [NC]
RewriteRule ^(.*)$ https://xn--80adaxca8c.xn--p1ai/$1 [R=301,L]
Перенаправление всего домена одновременно с версии с www на версию без www и с HTTP на HTTPS
При использовании данного правила не используйте отдельные правила редиректов с http на https и www. В редких случаях из-за такого могут вовсе не работать все редиректы.
RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Прочие массовые редиректы
С одной категории сайта на другую
RewriteCond %{REQUEST_URI} ^(.*)/old-stratitha/(.*)$
RewriteRule ^(.*)$ %1/new-stratitha/%2 [R=301,L]
Убираем html на конце URL
RewriteEngine on
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.html\ HTTP
RewriteRule ^([^.]+)\.html$ $1 [R=301,L]
RewriteCond %{REQUEST_URI} !(\.[^./]+)$
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule (.*) /$1.html
Убираем index.php на конце URL
#Настройка редиректа с index.php на конце
RewriteEngine On RewriteCond %{REQUEST_URI} ^/(.*?)/index\.php$
RewriteRule ^ /%1/ [R=301,L]
Не забываем заменять https://site.ru/ на адрес своего сайта, иначе редиректы не сработают!
#Вариант №2
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ https://site.ru/ [R=301,L]
#Вариант №3
RewriteCond %{REQUEST_URI} /index.php
RewriteRule ^(.*)$ https://site.ru/ [R=301,L]
Массовый редирект одновременно с index.php и index.html
#Вариант №1
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTPS/
RewriteRule ^(.*)index\.(php|html|htm)$ $1 [R=301,L]
#Вариант №2
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/
RewriteRule ^(.*)index\.(php|html|htm)$ $1 [R=301,L]
#Вариант №3
RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
RewriteRule ^(.*)index\.php$ https://%{HTTP_HOST}/$1 [R=301,L]
#Вариант №4
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(htm)\ HTTP/
RewriteRule ^(.*)index\.(htm)$ $1 [R=301,L]
Перенаправление в случае обновления веб-ресурса
*Вместо 14.124.354.80 - заменить на свой IP адресс.
RewriteEngine on
RewriteCond %{REQUEST_URI} !/info.html$
RewriteCond %{REMOTE_HOST} !^14\.124\.354\.80
RewriteRule $ http://vash-sait.ru/info.html [R=302,L]
Защита от хотлинков (кражи контента)
#Вариант №1
RewriteEngine On RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://([ -a-z0-9] \.)?vash-sait\.ru [NC]
RewriteRule \.(gif|jpe?g|png)$ - [F,NC,L]
#Вариант №2
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?ваш-домен.ru/.*$ [NC]
RewriteRule .*.(gif|jpg|png|ico)$ - [F,L]
Настройка перенаправлений на страницы ошибок (4xx, 5xx)
Пользовательская страница ошибок(404)
*Вместо указанных страниц с .html указываем адрес страницы ошибки на сайте
<>ErrorDocument 404 "/404.html"
Другие варианты страниц ошибок
ErrorDocument 401 /errors401.html ErrorDocument 403 /errors403.html ErrorDocument 404 /errors404.html ErrorDocument 500 /errors505.html
Правило для удаления лишних цифр на конце URL
RewriteEngine On RewriteRule ^(.+?)/\d+/?$ /$1/ [R=301,L]
Редиректы с верхнего регистра в нижний
Редирект с верхнего регистра в нижний ТОЛЬКО ДЛЯ URL (картинки он не трогает)
*может сделать редирект с внутренних страниц на главную, поэтому проверяйте внимательно
RewriteCond %{REQUEST_URI} ^[^A-Z]*[A-Z].*
RewriteCond %{REQUEST_URI} !(.*)\.jpg$
RewriteRule ^ https://%{HTTP_HOST}${lc:%{REQUEST_URI}} [L,R=301]
Редирект с URL в верхнем регистре на URL с нижним регистром
*Не всегда работает правильно и может создать цепочку редиректов. Если это произойдет прибегните к примеру №2
#Пример №1
RewriteCond expr "tolower(%{REQUEST_URI}) =~ /(.+)/"
RewriteRule [A-Z] %1 [R=301,L]
Пример №2
Напишите в поддержку хостинга сообщение, которое указано ниже
Доброго дня! Для сайта - https://ваш-сайт.ru/
Необходимо настроить редирект для URL-адресов с верхнего регистра в нижний. Для корректного редиректа нужно изменить файл http.conf. У нас к нему доступа нет, но он есть у вас. Нужно добавить в http.conf
RewriteMap lc int:tolower
После чего добавить в .htaccess правило
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} ^[^A-Z]*[A-Z].* RewriteRule ^ https://%{HTTP_HOST}${lc:%{REQUEST_URI}} [L,R=301]
Закрываем сайт от индексации
Способ ниже закрывает сайт отдельно для каждой поисковой системы. При парсинге с помощью утилит парсит 1 страницу и выдает 404 ошибку.
Способ №1 - закрывает от всех поисковых ботов
SetEnvIfNoCase User-Agent «^Googlebot» search_bot
SetEnvIfNoCase User-Agent «^Yandex» search_bot
SetEnvIfNoCase User-Agent «^Yahoo» search_bot
SetEnvIfNoCase User-Agent «^Aport» search_bot
SetEnvIfNoCase User-Agent «^msnbot» search_bot
SetEnvIfNoCase User-Agent «^spider» search_bot
SetEnvIfNoCase User-Agent «^Robot» search_bot
SetEnvIfNoCase User-Agent «^php» search_bot
SetEnvIfNoCase User-Agent «^Mail» search_bot
SetEnvIfNoCase User-Agent «^bot» search_bot
SetEnvIfNoCase User-Agent «^igdeSpyder» search_bot
SetEnvIfNoCase User-Agent «^Snapbot» search_bot
SetEnvIfNoCase User-Agent «^WordPress» search_bot
SetEnvIfNoCase User-Agent «^BlogPulseLive» search_bot
SetEnvIfNoCase User-Agent «^Parser» search_bot
Закрывает сайт для робота Яндекс
SetEnvIfNoCase User-Agent .*yandex.* search_robot
SetEnvIfNoCase User-Agent .*mail.* search_robot
Deny from env=search_robot
Варианты ошибок в htaccess и решения
Проблема
На OpenCart при настройке массовых правил происходит редирект на URL с index.php?_route_= и только потом на рабочий URL
Решение
В htaccess неправильно настроены порядок редиректов. Нельзя размещать директивы и правила после
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
Перенесите все правила, которые стоят ниже вышеуказанного правила, на самый верх файла.
Дополнительная информация.