Редирект с помощью .htaccess | FORNEX
с 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]
Уже ни для кого не секрет, что Гугл и Яндекс начинают выдавать «бонусы» сайтам, у которых установлен сертификат безопасности SSL, и которые начали работать через протокол https. И чтобы корректно настроить редирект с http на https, нужно прописать в .htaccess пару строчек.
Да, строчек действительно две. Но есть определенные нюансы, зависящие от настроек того или иного сервера, заставляющие нас, порой долго, искать в интернете комбинацию этих заветных строк. Ниже я приведу исчерпывающие правила для постраничного редиректа всего сайта с протокола http на https.
Вариант 1
RewriteCond %{HTTPS} =off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
Вариант 2
RewriteCond %{SERVER_PORT} !^443$ RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
Вариант 3
RewriteCond %{ENV:HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Вариант 4
RewriteCond %{HTTP:X-HTTPS} !1 RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Вариант 5
RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"' RewriteRule ^(.*)$ https://www.domain.com/$1 [L] #не забудьте заменить на ваш домен
Вариант 6
RewriteCond %{HTTP:X-Forwarded-Protocol} !=https RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Вариант 7. На одну строчку больше =)
RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
Каждый из приведенных выше вариантов нужно прописывать сразу после включения mod_rewrite, а именно — после директивы RewriteEngine On.
68316 просмотров
Февраль 29, 2016
Редирект с HTTP на HTTPS для Linux | REG.RU
Редирект на Linux-хостинге
Чтобы ваш сайт работал по безопасному протоколу HTTPS, после установки SSL-сертификата нужно настроить перенаправление (редирект) с HTTP на HTTPS в панели управления.
Для этого ваш сайт должен быть размещен на хостинге REG.RU. Попробуйте тестовый период бесплатного хостинга для сайтов html и php.
Обращаем внимание, что редирект стоит настраивать только в том случае, если в панели управления уже установлен SSL-сертификат: Как установить SSL-сертификат на хостинг?
Как настроить 301 редирект с HTTP на HTTPS?
Если у вас на хостинге панель управления ISPmanager, переадресацию можно настроить в несколько кликов средствами панели управления.
Если у вас на хостинге панель управления — cPanel или Plesk, редирект настраивается только через конфигурационный файл .htaccess
Настройка редиректа в ISPmanager
Откройте панель управления ISPmanager и перейдите в раздел «WWW-домены». Выберите домен, который должен открываться по HTTPS и нажмите
Готово, теперь ваш сайт будет работать по протоколу HTTPS.
Как настроить 301 редирект в htaccess:
- 1. Откройте вашу панель управления хостингом.
2.Откройте файл .htaccess. Он расположен в корневой папке сайта. Если файл .htaccess отсутствует, то причина может быть в том, что в cPanel не отображаются скрытые файлы. Чтобы отобразить скрытые файлы, воспользуйтесь инструкцией.
Как открыть файл .htacсess
В разделе «Домены» выберите пункт Дополнительные домены. Нажмите по строке, где указана корневая папка домена. Затем нажмите правой кнопкой по файлу .htaccess и выберите в появившемся списке пункт Edit:
Под нужным доменом нажмите по строке, где указана корневая папка домена
-
3.
Добавьте в конце файла .htaccess одно из правил, которое подходит для вашего случая:
редирект всех страниц с HTTP на HTTPS
Редирект всех страниц с http:// на https://, в том числе и с
Вариант 1
RewriteEngine On RewriteCond %{SERVER_PORT} !^443$ RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
или воспользуйтесь вторым вариантом (если первый вариант не поможет):
Вариант 2
RewriteEngine On RewriteCond %{HTTPS} =off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
если все варианты не помогли и возникает циклическая переадресация, добавьте:
Вариант 3
RewriteEngine On RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Вариант 4
RewriteEngine On RewriteCond %{ENV:HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
редирект на HTTPS только выбранной страницы
Для примера возьмём страницу login.php. 301 редирект для неё настраивается следующим образом:
Вариант 1
RewriteEngine On RewriteCond %{HTTPS} =off RewriteCond %{REQUEST_URI} =/login.php RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
или
Вариант 2
RewriteEngine On RewriteCond %{SERVER_PORT} !^443$ RewriteCond %{REQUEST_URI} =/login.php RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
редирект на сайт HTTPS всех страниц, кроме одной
В примере ниже редирект настраивается для страницы test.php.
RewriteEngine On RewriteCond %{HTTPS} =off RewriteCond %{REQUEST_URI} !^/test.php RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
-
4.
Сохраните изменения.
Готово, теперь ваш сайт будет работать по протоколу HTTPS.
Обратите внимание! Если ни один из предложенных вариантов кода не подошёл, обратитесь к разработчикам сайта или на тематические форумы. В некоторых случаях корректная настройка редиректа возможна только средствами CMS.
Помогла ли вам статья? 1456
раз уже
помогла
Настраиваем редирект с HTTP на HTTPS
Приветствую вас на сайте Impuls-Web!
Сегодня мы рассмотрим последний этап перевода сайта на SSL-сертификат, в котором нам нужно настроить редирект с http на https, или, другими словами, перенаправление с нашего прежнего адреса, начинающегося с http://, на новый адрес по протоколу HTTPS.
Навигация по статье:
В предыдущих статьях я рассматривала процесс получения у установки SSL сертификата. Если вы их не читали – вот ссылки:
Нужен ли SSL-сертификат для сайта?
Как получить бесплатно SSL-сертификат для сайта?
Как получить SSL сертификат?
Как установить SSL-сертификат на хостинг?
Переадресация на https через htaccess
Если ваш сайт уже проиндексирован то перед настройкой редиректа вам нужно произвести склейку зеркал, а потом уже настраивать редирект. Это поможет минимизировать потери трафика и позиций . О том как это сделать написано тут.Для того, что бы настроить редирект с http на https, вам нужно, при помощи программы Notepad++, в корне вашего сайта открыть файл .htaccess, и далее, в самом начале этого файла, прописать один из нескольких вариантов перенаправления.
Как пользоваться Notepad++ и настроить для него FTP-подключение я рассказывала в одной из прошлых статей, с которой вы можете ознакомиться по этой ссылке:
Редактирование файлов сайта в Notepad++
Все дело в том, что настройки хостинга могут быть разные. Поэтому какого-то универсального синтаксиса для написание перенаправления нет и нужно будет пробовать разные варианты, что бы найти тот, который сработает на вашем хостинге.
Если вы не хотите экспериментировать с различными способами перенаправления, то лучше всего будет обратиться в техподдержку вашего хостинга и уточнить у них, как лучше всего настроить редирект с HTTP на HTTPS именно для вашего хостинга.
Варианты написания серверного редиректа для HTTPS
Мне удалось найти семь основных вариантов, которые используют для настройки редиректа для HTTPS протокола:
Вариант 1
RewriteCond %{HTTPS} =off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
RewriteCond %{HTTPS} =off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L] |
Вариант 2
RewriteCond %{SERVER_PORT} !^443$ RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
RewriteCond %{SERVER_PORT} !^443$ RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L] |
Вариант 3
RewriteCond %{ENV:HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{ENV:HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] |
Вариант 4
RewriteCond %{HTTP:X-HTTPS} !1 RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTP:X-HTTPS} !1 RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] |
Вариант 5
RewriteCond %{HTTP:CF-Visitor} ‘»scheme»:»http»‘ RewriteRule ^(.*)$ https://www.site.ru/$1 [L]
RewriteCond %{HTTP:CF-Visitor} ‘»scheme»:»http»‘ RewriteRule ^(.*)$ https://www.site.ru/$1 [L] |
Вариант 6
RewriteCond %{HTTP:X-Forwarded-Protocol} !=https RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP:X-Forwarded-Protocol} !=https RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] |
Вариант 7
RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE] |
Вариант 8
RewriteEngine On RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteEngine On RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] |
После вставки одного из этих вариантов в файл .htaccess, сохраняете изменения.
Проверка редиректа
Затем, для того что бы проверить работает он или нет, переходим в браузер и в адресной строке вводим адрес нашего сайта с протоколом HTTP. Если перенаправление сработает, то у вас должна будет открыться страница вашего сайта с протоколом HTTPS.
Так же, вы можете воспользоваться одним из онлайн-сервисов, которые позволяют просмотреть правильность выполнения редиректа. Например, Redirect Checker. Для выполнения проверки вам нужно:
- 1.Перейти на страницу онлайн-сервиса по этой ссылке
- 2.В поле для ввода указать адрес, с которого должно осуществляться перенаправление в формате http://имя-сайта.ру .
- 3.А затем нажать на кнопку «Analyse».
В результате сервис вам выдаст отчет о правильности работы перенаправления. В моем случае редирект работает не правильно:
Перенаправление вроде бы как происходит, но это происходит несколько раз, и почему то происходит не 301 редирект, а 302. Насколько я поняла, это называется циклический редирект, и такого быть не должно. Поэтому мне нужно пробовать другие варианты.
Так же, вы можете проверить правильность выполнения редиректа для конкретной поисковой системы. Для этого, перед нажатием на кнопку «Analyse», нужно выбрать из выпадающего списка название нужного поискового робота:
После того, как вы добавите свой сайт с протоколом HTTPS в поисковые системы, укажите основное зеркало, дождетесь переиндексации и правильно настроите 301-редирект, ваш переезд на протокол HTTPS можно будет считать завершенным. Для крупного сайта такой переезд может занять от нескольких недель, до нескольких месяцев. Все будет зависеть от того, как долго яндекс будет производить склейку зеркал.
Так же, вы можете назначить 301 редирект сразу после получения и установки с SSL-сертификата, но в этом случае вы рискуете тем, что многие страницы вашего сайта могут на время выпасть из поисковой выдачи.
Я надеюсь, что данная статья поможет вам правильно настроить редирект для HTTPS –протокола и осуществить переход на SSL-сертификат с наименьшими потерями. Если данная статья вам понравилась, делайте репост в социальные сети и подписывайтесь на мою рассылку. Желаю вам успешного переезда и до встречи в следующих статьях.
С уважением Юлия Гусарь
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
Редирект 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]
С помощью таких не хитрых махинаций мы избавимся от дублей страниц, тем самым улучшив нашу внутреннюю оптимизацию и соответственно качество сайта.
Если у вас появились какие-то вопросы, пишите в комментарии — будем разбираться 🙂
Понравился пост? Сделай репост и подпишись!
Редирект с http на https через htaccess
Новый 2017й год — это будет массовый год перехода больших и маленьких сайтов, блогов и порталов с обычного старого и всем известного протокола HTTP на его более новую и безопасную версию HTTS. Буква S в аббревиатуре обозначает «Secure», то есть безопасный. Это достигается за счёт использования протоколом шифрования, которое используется в протоколах SSL или TLS, поверх которых будут передаваться данные. Такую политику продвигает компания Google. В след за ней, скорее всего, этим займутся и все остальные Интернет-медиагиганты.
Всвязи с этими событиями у веб-мастеров начинают возникать различные вопросы, связанные с переходом от одного протокола к другому. В этой статье я расскажу про то, как настроить редирект с http на https через htaccess на веб-сервере Apache.
Что это такое и зачем оно нужно?
В переводе с английского языка слово «redirect» обозначает перенаправление. То есть, смысл этой процедуры заключается в том, чтобы трафик, который идёт на обычную версию сайта перенаправить на новую, защищённую версию. Тут дело в том, что для поисковиков сайт http://example.ru и https://example.ru — это два разных ресурса. Поэтому, после перехода на защищённый протокол, в Интернете появляется полная копия исходного сайта. И вот чтобы избежать проблем с поиском и работой сайта, крайне необходимо настроить перенаправление, то есть редирект сайта с http на https.
Настройка перенаправления в htaccess
У самого популярного веб-сервера Apache для большего удобства работы и настройки (проще говоря, чтобы пользователь не лазил лишний раз в глобальный конфиг httpd.conf) используется специальный файл дополнительной конфигурации .htaccess, который лежит в каталоге сайта. Вот как раз с его помощью можно настроить перенаправление http на https.
Итак, с помощью любого подручного текстового редактора — vim, nano, mcedit и т.п. — открываем файл и прописываем следующее:
RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
Если вдруг не заработает — пробуйте второй вариант настройки редиректа через htaccess:
RewriteEngine On RewriteCond %{SERVER_PORT} !^443$ RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Во втором случае используется правило Redirect 301, когда при попытке доступа к той или иной странице на старой версии http сервер будет отвечать, что она переехала на новый адрес с https.
Закрываем файл и сохраняем его. В принципе, конфиг должен будет подцепиться автоматически, но можно и перезапустить веб-сервер для верности.
90000 Redirect HTTP to HTTPS 90001 90002 Google considers a secure website with a valid SSL certificate (run under HTTPS) as an SEO ranking factor. If you have not already done so you need to setup your domain to run under https AND setup relevant 301 redirect http to https htaccess rules. 90003 90002 In this SEO tutorial you will learn how to setup a .htaccess 301 redirect rule to automatically redirect all traffic from the 90005 http: // … 90006 version of a site to the corresponding 90005 https: // … 90006 version and also learn how to setup relevant WWW or Non-WWW canonical.htaccess rules as well. 90003 90010 90010 Redirect HTTP to HTTPS Htaccess Downloads 90002 Note: This tutorial is only relevant for websites run on an Apache server, if your domain is hosted on a Windows server you’ll need to find another tutorial: I suggest using Google 🙂 90003 90002 Also see how to move a WordPress site from http to https tutorial. 90003 90016 Setup 301 Redirect Htaccess HTTP to HTTPS Rules 90017 90002 So you have a domain hosted on an Apache server which runs under both http and https (loading 90019 http: // example.com / 90020 and 90019 https://example.com/ 90020 versions of your website in a browser stays 90005 http 90006 and 90005 https 90006 respectively: AKA no redirection) and want only the https version to show. 90003 90002 Your website needs an 90005 .htaccess 90006 file with the relevant 301 redirect 90019 http 90020 to 90019 https 90020 rules. 90003 90036 90036 Secure https URL in Google Chrome 90002 90005 Step One: 90006 Check if you already have a .htaccess file in the root of your domain.90003 90002 There’s multiple ways to check this, you might have a control panel to browse your sites files, I’ll use Filezilla (free FTP program, very popular). It’s a simple case of login to your server using Filezilla, browse to the root of the domain (where your main files for 90019 domain.com/ 90020 are: could be under 90019 / public_html / 90020 or 90019 / www / 90020) and check if there’s a file called 90005 .htaccess 90006. 90003 90052 90052 Check for a .htaccess File with Filezilla FTP Program 90054 90002 Note: Some FTP programs do not show.htaccess files by default, they consider them hidden files and hide them from you! 90003 90057 90002 As you can see in the screenshot above (for this domain) a .htaccess file exists, to modify it I downloaded it to my PC with Filezilla. 90003 90002 If your website lacks a .htaccess file they are a pain to create, a .htaccess file is just a text file with an unusual filename (files tend not to start with a dot.). Not many text editors can create .htaccess files, so if a website lacks one I modify an existing htaccess file like this 90005 Downloadable.htaccess File 90006: the zip file contains an almost empty .htaccess file (just has one line 90019 RewriteEngine On 90020. 90003 90002 90005 Step Two: 90006 Download your sites root .htaccess file, or if you are missing a root .htaccess file download the almost empty one above (or other examples below). 90003 90002 Load the .htaccess file in a text editor (Notepad is OK for this, but can strip carriage returns: I use Notepad ++, it’s free) or if your Apache server has an option to edit files online (via a control panel for example) you could use that feature and check it’s contents.index \ .php $ — [L] 90077 RewriteCond% {REQUEST_FILENAME}! -f 90077 RewriteCond% {REQUEST_FILENAME}! -d 90077 RewriteRule. /index.php [L] 90077 ifmodule> 90077 # END WordPress 90086 90002 With default WordPress (with SEO friendly permalinks enabled) the above is all you’ll find in the .htaccess file. Do not touch these default WordPress rules, if later you install a caching plugin like W3 Total Cache (really good plugin for SEO performance reasons) the plugin modifies the WordPress rules. 90003 90054 90002 If you are having problems creating the WordPress.htaccess file, 90005 Download the Default WordPress .htaccess File 90006. This is only suitable for standard WordPress installs, it’s not suitable for multi-site WordPress installations. 90003 90057 90002 We’ll be adding our new http to https redirection rules ABOVE the WordPress rules because we want the new rules to activate BEFORE WordPress. 90003 90097 Does Your Site Run Under A WWW or Non-WWW URL? 90098 90002 Most servers are setup to automatically output a site in both WWW and Non-WWW versions, what this means is when loading a site via 90019 http: // www.example.com 90020 and 90019 https://example.com 90020 (or the corresponding https versions) the same content loads. If setting up a new site it’s generally best to use the non-WWW version, but if your site is already running under the WWW version do not worry, it’s not a big deal. 90003 90002 If your site is already setup to deal with canonical URL issues (check by loading both the 90019 http://www.example.com 90020 and 90019 http://example.com 90020 versions and see if the URL changes on the preferred version) remove lines four and five from the rules below.If both WWW and Non-WWW URLs load with no redirection use all five lines of .htaccess rules. 90003 90002 90005 Step Three: 90006 Choose a relevant instruction below. 90003 90002 There’s different .htaccess rules for a WWW and Non-WWW site, so use the appropriate instructions below. 90003 90002 90005 My Site Runs Under 90019 http: ///www.example.com 90020 90006 90003 90002 Update: I moved this article to a domain which is NON-WWW. 90003 90002 We are going to setup two .htaccess rules, one rule-set to deal with all HTTP traffic (redirect it to HTTPS) and another rule-set to redirect the Non-WWW URLs to the WWW version of the site.www.example.com $ 90077 RewriteRule (. *) https://www.example.com/$1 [L, R = 301] 90086 90002 The first line 90019 RewriteEngine On 90020 is required, there has to be a line with this on ABOVE our new rule-sets, if it already exists at the top there’s no need to add it again (it will not cause a problem if it’s repeated, but the repeat is not required). 90003 90002 Lines two and three (pasted below) are the first rule-set for automatically 301 redirecting all HTTP traffic to HTTPS. These two lines require no modification.www.example.com $ 90077 RewriteRule (. *) https://www.example.com/$1 [L, R = 301] 90086 90002 Add these five lines to the top of your .htaccess file, save it and upload it over your existing .htaccess file. 90003 90002 Any webpage under http or the Non-WWW version of the site will load the corresponding https WWW version of the webpage. 90003 90002 90005 Downloadable https WWW .htaccess File 90006 90003 90002 90005 My Site Runs Under 90019 http://example.com 90020 90006 90003 90002 We are going to setup two.example.com $ 90077 RewriteRule (. *) https://example.com/$1 [L, R = 301] 90086 90002 The first line 90019 RewriteEngine On 90020 is required, there has to be a line with this on ABOVE our new rule-sets, if it already exists at the top there’s no need to add it again (it will not cause a problem if it’s repeated, but the repeat is not required). 90003 90002 Lines two and three (pasted below) are the first rule-set for automatically 301 redirecting all HTTP traffic to HTTPS. These two lines require no modification.example.com $ 90077 RewriteRule (. *) https://example.com/$1 [L, R = 301] 90086 90002 Add these five lines to the top of your .htaccess file, save it and upload it over your existing. htaccess file. 90003 90002 Any webpage under http or the WWW version of the site will load the corresponding https Non-WWW version of the webpage. 90003 90002 90005 Downloadable https Non-WWW .htaccess File 90006 90003 90002 I use these rules on this site, you will find: 90003 90201 90202 http://seo-gold.com/ redirects to https: // seo-gold.com / 90203 90202 http://www.seo-gold.com/ redirects to https://seo-gold.com/ 90203 90202 https://www.seo-gold.com/ redirects to https: // seo- gold.com/ 90203 90208 90002 After uploading the new .htaccess file the easiest way to test your website is load your websites home page with the three URL structures http, https, www & non-www URLs, if the new 301 redirect http to https htaccess rules are working they will all load the same URL. 90003 90211 Update Google Search Console and Google Analytics to Use https 90212 90002 If you have not already done so change Google Search Console and Google Analytics to use the https version of the site.90003 90211 Downloadable .htaccess Files 90212 90002 In the http to https Htaccess 301 Redirect Rules Tutorial above there’s links to three downloadable .htaccess files, below is a copy of those links for easy access. 90003 90002 The first file is an almost empty .htaccess file. The 2nd file is htaccess rules to 301 redirect http to https with canonical support for websites which have 90019 www. 90020 in the URL. The 3rd file is htaccess rules to 301 redirect http to https with canonical support for websites which have do NOT have 90019 www.90020 in the URL. 90003 90002 David Law 90003 90227 90227 David Law: Technical SEO Expert with 20 years Online Business, SEO, Search Engine Marketing and Social Media Marketing experience … Creator of multiple WordPress SEO Themes and SEO Plugins. Interests: wildlife, walking, environmental issues, politics, economics, journalism, consumer rights. 90002 Website — SEO Gold Coast 90003.90000 How to redirect HTTP to HTTPS Using .htaccess 90001 90002 Chrome and Firefox have started showing insecure warnings on sites without SSL certificates. Without SSL, your website will show insecure to the visitors. Therefore, using an SSL-encrypted connection for safety, accessibility or PCI compliance reasons is necessary. It becomes very important to redirect from HTTP to HTTPS. 90003 90004 What is SSL? 90005 90002 SSL (Secure Sockets Layer) is a standard security protocol for establishing encrypted links between a web server and a browser in an online communication.90003 90002 The usage of SSL technology ensures that all data transmitted between the web server and browser remains encrypted. 90003 90002 An 90011 SSL certificate 90012 is necessary to create SSL connection. You would need to give all details about the identity of your website and your company as and when you choose to activate SSL on your web server. Following this, two cryptographic keys are created — a Private Key and a Public Key. 90003 90002 90015 Learn More: Why SSL is Critical? 90016 90003 90002 In order to force your web traffic to use HTTPS, edit the codes in the 90011.htaccess file. 90012 90003 90002 Before we move onto redirecting HTTP to HTTPS, here’s how you can edit .htaccess file. If you already know skip to Redirection steps. 90003 90004 Editing .htaccess File 90005 90002 There are instructions / directives in the .htaccess file that tell the server how to act in certain scenarios and directly affects how your website functions. Common directives in .htaccess file: 90003 90002 90011 Ways to edit an .htaccess file: 90012 90003 90032 90033 Edit the file on your computer and upload it to the server using FTP.90034 90033 Use «Edit» mode in FTP program that allows you to edit a file remotely. 90034 90033 Use a text editor and SSH to edit the file. 90034 90033 Use the File Manager in 90011 cPanel 90012 to edit the file. 90034 90043 90004 Editing .htaccess in cPanel File Manager 90005 90002 90011 Note: 90012 Backup your website in case something goes wrong. 90003 90032 90033 Login to cPanel 90034 90033 Files>