Редирект 301 с http на https

Редирект с https на http

А поисковик Google на вашем http сайте начинает, в первую очередь искать https страницы …. и находит их на других сайтах, находящися на этом хостинге, и индексирует! ( подробнее здесь )

Иногда потребность в возврате с https на протокол http вызвана тем, что быстроробот Гугла в несколько раз реже заходит на «безопасный сайт», и не видит обновлений контента.

Как сделать редирект  с https на http?

Решение 1

Делаем редирект на http с помощью .htaccess

Замечание Перечисленные ниже варианты предназначены для серверов Linux.

Пояснения для всех последующих вариантов Редактируем или создаём, если его нет, файл .htaccess в корневой папке вашего сайта, и добавляем сразу после
RewriteEngine On
один из нижеперечисленных вариантов, при этом не забыв изменить site.ru на URL вашего сайта.

Вариант 1
RewriteCond %{SERVER_PORT} ^443$ [OR] RewriteCond %{HTTPS} =on

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

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

Вариант 3
RewriteCond %{HTTPS} =on
RewriteRule ^.*$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Обратите внимание

Вариант 4
RewriteCond %{SERVER_PORT} 443
RewriteRule ^.*$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Вариант 5
RewriteCond %{HTTPS} =on
RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI}

Вариант 6
RewriteCond %{HTTP:SSL} =1 [NC] RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]

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

Вариант 7
RewriteCond %{HTTP_HOST} !^site.ru$ [NC] RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

Вариант 8
RewriteCond %{HTTP:SSL} =1 [NC] RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC] RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [L,R=301]

Вариант 9
RewriteCond %{HTTP:X-Forwarded-Proto} =https RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Вариант 10
RewriteCond %{SERVER_PORT} ^443$ [OR] RewriteCond %{ENV:HTTPS} =on

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

Попробуем ещё вариант — вместо %{HTTPS} указать %{ENV:HTTPS}

Вариант 11
RewriteCond %{ENV:HTTPS} on
RewriteRule ^.*$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Вариант 12
RewriteCond %{ENV:HTTPS} On
RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI}

Важно

Замечание Если не работает, то можно попробовать поместить, указанные выше строки, в выражение IfModule.

ВАЖНОПри открытии сайта, Сначала браузер проводит проверку наличия SSL-сертификата и уже затем срабатывает редирект. Другими словами, если на сайте нет SSL-сертификата, то посетители сначала увидят предупреждение браузера о незащищённом контенте, и уже затем сработает редирект на http ….

ЗамечаниеОбычно, при открытии сайта, Сначала браузер, как правило, открывает версию https сайта. Но это не точно. На самом деле, это зависит от настроек сервера и сайта.

Если вебсервер отдаёт заголовок «Strict-Transport-Security» ( смотрим в настройках add_header Strict-Transport-Security ), тогда браузер будет открывать сайт по HTTPS протоколу.

Дополнительно, этот заголовок появляется, если в настройках web-домена установлено: «Повышенная безопасность SSL»

Если Решение 1 не работает?

  В частности этим грешат серверы и VDS с панелью ISP Manager 5 ( на других панелях управления, например cPanel, с Lunix на этом же сайте переадресация работает! )

Решение 2

Открываем и внимательно смотрим ваш сайт (для примера site.ru )именно по протоколу httpS
если он не ваш и отличаются и по внешнему виду и по контенту, то нужно выяснить его ( URL ). Обычно это один из https сайтов, расположенный на вашем IP адресе. Найти список сайтов на вашем IP можно стандартным сервисом «Сайты на одном IP»

Итак, — хорошо — вы узнали, какой это сайт ( назовём его, для удобства https-sait.ru )

И теперь все дальнейшие правки, как ни странно, будем вести не на проблемном сайте, а на найденном (https-sait.ru)!

Совет

Идея: поставить передресацию с https на http на найденном https сайте https-sait.ru

13 Решение: создаем в корне этого сайта в файле htaccess правила типа условное выражение такого вида:

# RewriteCond %{HTTPS} on RewriteCond %{HTTP_HOST} ^www.sait.ru$ [NC] RewriteRule ^(.*)$ http://www.sait.ru/$1 [R=301,L] # RewriteCond %{HTTPS} on RewriteCond %{HTTP_HOST} ^sait2.ru$ [NC] RewriteRule ^(.*)$ http://sait2.

ru/$1 [R=301,L] # RewriteCond %{HTTPS} on RewriteCond %{HTTP_HOST} ^sait3.ru$ [NC]

RewriteRule ^(.*)$ http://sait3.ru/$1 [R=301,L] # и так далее… для одного сайта sait.ru или всех остальных http сайтов (sait2.ru, sait3.

ru) , которые есть на вашем хостинге.

Пробуем, проверяем.

Подводим итог.

Другими словами, для того, чтобы сделать редирект с https на http вашего сайта sait.ru, вам потребуется найти и открыть https-sait.ru, отредактировать там .htaccess файл, прописав правила аналогичные пункту 13 для каждого вашего сайта: sait 1, 2, 3.ru

Вот такие странности панели ISP Manager ….

Почему это происходит?

Решение 3

Замечание Предлагаемое решение работает на серверах с NginX.

Если у вас сервер с nginx, тогда делаем переадресацию в его настройках

Вариант 3.1

server { server_name site.ru; listen ip:443 ssl; # пути к сертификату ssl on; expires max; return 301 http://site.ru$request_uri; }

Указав, вместо ip — ваш реальный IP, вместо site.ru — URL вашего сайта и вместо # пути к сертификату — реальный путь. Сохраняем и перегружаем сервер

Модифицированный вариант:

Вариант 3.2

server { server_name site.ru; return 301 http://$server_name$request_uri; listen ip:443 ssl; # пути к сертификату ssl on; expires max; return 301 http://site.ru$request_uri; }

находим и удаляем там же строку
add_header Strict-Transport-Security «max-age=31536000;»;

Если что то не работает, перезагружаем nginx и смотрим ошибки, которые находятся в /var/log/nginx/error.log

Замечание Если нужно, чтобы сайт открывался как по http, так и по протоколу https, то вышеуказанные варианты приведут к зацикливанию ….

Нужно же, чтобы сайт открывался как по http, так и по https. Если прописывать редирект в nginx на http

Вариант 3.2

Некоторые, устав бороться с NginX, сносят его и ставят классический редирект

Решение 3

Сделать редирект с https на http в файле .htaccess

Решение даётся здесь

https://moisait.ru

Решение 1.2

Решение 2

Сделать редирект с https на http в файле .htaccess

1

Источник: https://joom-la-la.ru/technologyi/164-redirekt-s-https-na-http.html

Редирект с помощью .htaccess

с http на https

Для настройки переадресации (редиректа), в директории своего сайта, добавьте в начало файла .htaccess (если этого файла нет, то создайте, заметьте файлы начинается с точки), следующие строки:

RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

или как другой вариант

RewriteEngine On RewriteCond %{HTTP:X-HTTPS} !1 RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

с https на http

Что бы создать редирект с HTTPS на HTTP с помощью .htaccess, вам нужно открыть файл .htaccess , в папке сайта, если его нет то необходимо создать этот файл (.htaccess), и написать следующий код:

RewriteEngine on RewriteCond %{HTTPS} on RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI}

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

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

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

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

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

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} ![^/]$ RewriteRule ^(.*)/$ /$1 [R=301,L]

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

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

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

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]

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

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]

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

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]

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

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]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник: https://fornex.com/help/http-https-htaccess/

301 редирект htaccess — Правильный код для сайта здесь!

Здравствуйте, уважаемые друзья и гости блога Pribylwm.ru! Сейчас Вы узнаете как правильно делается на сайте 301 редирект htaccess и вообще, что такое редирект и зачем он нужен на ресурсе? Поехали …

301 редирект — это код статуса ресурса, который возникает на нем при переадресации на другой сайт и отправляется клиенту, т.е. браузеру.

Для чего это нужно? Вообще переадресация пользователя с одного адреса страницы сайта на другой необходима при переезде сайта на новый адрес или при изменении адреса поста на сайте и в разных подобных ситуациях возникающих по каким-то обстоятельствам.

Например при переходе сайта с http на https. Об этом я писал вот в этом материале ранее! Вот как раз для перевода сайта на https необходимо прописать в файле htaccess код редиректа, который будет указывать поисковым машинам, что ваш сайт находится теперь по адресу начинающегося с HTTPS. Вот этот код:

  • RewriteCond %{SERVER_PORT} !^443$RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]

или можно вот так:

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

А вообще-то видов редиректов существует масса, вот некоторые из них, которые считаются наиболее важными и востребованными среди вебмастеров …

Виды 301 редиректов для вебмастера!

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

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

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

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

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

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

Важно!

Для устранения ошибки на сайте (возникновение дублей главной страницы!), необходимо в файл htaccess вашего сайта установить следующий код:

Обратите внимание

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]

Тогда главная страница вашего сайта не будет доступна по нескольким адресам, так например: home.php,index.php, default.php и др. Соответственно злополучные дубли вашей главной страницы исчезнут и сайт поднимется в поисковой выдаче из-за исчезновения данной ошибки.

Вот еще полезный сервис, который поможет Вам при создании анонимных редирект-ссылок для Вашего сайта: Katvin.com

Источник: https://pribylwm.ru/samoobrazovanie/301-redirekt-htaccess.html

Подборка вариантов Redirect 301 — на все случаи жизни сайта

В посте по тексту ниже рассмотрим поближе варианты различных 301 редиректов…

Способы настройки 301 редиректа для администраторов сайтов, это одна из важнейших наук, которой следует уделить время для изучения! чтобы при случае настроек 301, особо не растерять полезный вес сайта…

Например, пост будет полезен тем владельцам сайта, которые переносят свой сайт на https, либо вообще решились на кардинальный шаг — перенести свой сайт на новый домен!

…а также разные мелкие настройки редиректа, которые здорово выручать в неких жизненных ситуациях.

Без лишних слов, к делу:

настройка 301 редиректа со старого на новый домен

Если вы хорошо подумали относительно шага по переносу сайта с одного (старого — old) домена на новый, то помогут эти строки: (как понимаете, все показанные в статье вариации кодов для файла .htaccess)

Вообще, как мне представляется по заданным в последнее время вопросам, нынче многие подумывают о переносе сайта на новый домен: в основном желают съехать с зоны RU на какие-то иные… заменяя при этом полностью имя домена, хотя, возможно, есть резон рассмотреть вопрос просто-напросто изменить доменную зону, оставив самое имя домена прежним.

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

Итак, код, если переносите сайт с домена на домен:

RewriteCond %{HTTP_HOST} ^old-site.ru$ [NC] RewriteRule ^(.*)$ https://www.new-site.ru/$1 [R=301,L]

www в зависимости от вашего варианта использования доменного имени.

Если

к оглавлению $

изменить префикс меток и рубрик на работающем сайте

выручит такая настройка редиректа:

# Redirect 301 я изменил префикс рубрик и меток RedirectMatch 301 /category/(.*) https://домен.ru/ats-cats/$1 RedirectMatch 301 /tag/(.*) https://домен.ru/ats-tags/$1

Как изменить префиксы меток, рубрик описано по указанной ссылке.

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

к оглавлению $

простой 301 редирект — перенаправления

# Redirect 301 RewriteEngine on # простой редирект Redirect 301 /avto https://домен.ru/ Redirect 301 /category/bez-rubriki/ https://домен.ru/новое-имя-категории

Примера ради:

/category/bez-rubriki/ = пробел = https://домен.ru/

после переезда на https

редирект для хостинга Джино

# для хостинга ДЖИНО — добавим так: если этой строки нет выше RewriteEngine On RewriteEngine On # RewriteCond %{HTTP:X-Forwarded-Protocol} !=https # RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

редирект для хостинга Спринтхост

# для хостинга Спринтхост RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

Кому-то может быть подойдёт такой пример редиректа 301  при переезде с http на https:

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

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

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

как осуществить переезд сайта с http на https читайте в этом постеКак самостоятельно перевести сайт на https — сертификат ssl — шифрование. А если есть желание заказать переезд у меня, то познакомьтесь с условиями ЗДЕСЬПереведу Ваш сайт на https — расторопно и качественно.

Однако, как ни крути, но бывают такие случаи, когда требуется съехать с нового протокола https на прежний… http к примеру, в работах с тестовыми сайтами…

к оглавлению $

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

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

301 редирект с www на без www

(тот случай, когда главное зеркало — НЕ www)

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

А это наоборот:

301 редирект с имени без WWW на имя WWW

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

Как отрабатываются установленные на сайте редиректы, тестируйте здесь…

…статья будет дополняться естественным образом…

Online консультация по работе c сайтом на WordPress

…вопросы в комментариях — помогу, в чём дюжу…
mihalica.ru !

Источник: https://mihalica.ru/301-redirect/

Nginx redirect (на https, с www на без www, 301 редирект)

В Nginx версий до 0.9.1 переадресация (301 редирект) может задаваться следующим образом:

server {
listen 80;
server_name example.com;

rewrite ^ http://example-site.com$request_uri;
}

В современных версиях веб-сервера, согласно официальной документации в Nginx redirect нужно настраивать используя return с указанием кода HTTP ответа (301 или 302)

server {
listen 80;
server_name example.com;
return 301 http://$host$request_uri;
}

В примере приведен пример настройки переадресации все запросов к страницам одного сайта на страницы другого сайта.

server {
listen 80;
server_name www.example.com;
return 301 http://example.com$request_uri;
}

Nginx редирект на https

server {
listen 80;
server_name www.example.com;
return 301 https://example.com$request_uri;
}

или

server {
listen 80;
server_name www.example.com example.com;
return 301 https://example.com$request_uri;
}

В последнем случае редирект будет отрабатывать для www.example.com и example.com, все запросы будут направляться на имя без www, доступную по https.

Если переадресация нужна только для example.com без www, то www.example.com можно указать в качестве server_name в отдельной специально созданной секции конфигурационного файла

server {
listen 80;
server_name www.example.com;

}

Также часто возникает необходимость переадресовывать запросы ко всем доменам в конфигах на один, сделать это можно задав две секции server и директиву default_server, под которую будут попадать все имена сайтов кроме заданных непосредственно (example.com и www.example.com в примере).

server {
listen 80;
server_name example.com www.example.com;

}

server {
listen 80 default_server;
server_name _;
return 301 http://example.com$request_uri;
}

Если на сервере используется конфигурация Nginx + Apache, Nginx + Unicorn или подобная редирект всегда настраивается для того пакета, который первым обрабатывает запрос принимая его непосредственно от пользователя

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

Источник: https://server-gu.ru/nginx-redirect/

301 Редирект в htaccess с http + www на https без www

301 редирект в создании сайтов и их же продвижении играет самую важную скрипку, ведь при криво настроенном перенаправлении ваш сайт с легкостью вылетит из поиска, раздублируются страницы по самое немогу, а также привнесет раздрай в вашем творении. И чтобы этого не произошло надо настраивать 301 Редирект в htaccess правильно! (с Домена на нужный Домен, со Страницы на правильную Страницу). 

А пока немного теории: 301 редирект это по сути простая 301-ая ошибка (301 Permament Redirect), которая возвращается сервером при запросе конкретного адреса вашего сайта, расшифровывается так: «Сайт на постоянной основе перенесен на такой-то адрес». Все пользователи, боты и другие инопланетные обитатели зашедшие на ваш сайт, будут перенаправляться по новому месту прописки, и для поисковых систем Яндекс, Гугл и других (произойдет склейка домена), весь вес сайта будет перенесен на новый адрес.

Однако санкции наложенные на старый сайт перенесены не будут, иначе все конкуренты давно бы наклепали редиректов со своих ГовноСайтов на сайты конкурентов.

Итак: Правильная настройка 301 редиректа в .htaccess

Базовая настройка редиректа с WWW.site.ru на site.ru  до появления защищенного протокола выглядела так:

Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^www.(.*) [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Обратный редирект с site.ru на WWW.site.ru так:

Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} !^www.(.*) [NC] RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]

Теперь же когда повсеместно стали использоваться Https (SSL) защищенные протоколы. Стали делать переадресацию с с http на https

Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTPS} =off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

Но тут возник вопрос. Как же правильно объединить эти 2 301 редиректа в один, получить компактный код и чтобы не слишком заморачиваться. На просторах интернета я нашел такой вот код и он меня вполне устраивает.

Сразу и перенаправление с www на без + редирект с http на https:

Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} ^www. RewriteRule (.*) https://site.ru/$1 [L,R=301] Ниже новый вариант который 100% работает (правка от 09.02.2018) RewriteEngine on RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Примечание!
1) site.ru — нужно заменить на ваш адрес сайта
2) Эти две строчки: 

Options +FollowSymLinks RewriteEngine On

Сразу прописаны в файле .htaccess в CMS Joomla 1.5 / 2.5 / 3.x / итд.
Однако если вы их не нашли в этом файле то, чтобы код работал, их необходимо прописать.

Также чтобы не забыть — Простые редиректы!

На другой сайт:

Redirect 301 / http://site.com

Страница на сайт:

Redirect 301 /katalog/tovar1.html http://drugoysite.ru/tovar2.html

Страница на страницу:

Redirect 301 /katalog/tovar-old.html /katalog/tovar-new.html

Я делаю сайты на Joomla 3, но эти редиректы подходят большинству сайтов на php с .htaccess

Источник: https://foxxy.ru/stati-pro-sozdanie/107-301-redirekt-v-htaccess-s-http-www-na-https-bez-www

Ссылка на основную публикацию