Особенности, связанные со структурой каталогов
Встречаются конфигурации веб-серверов с несколькими файлами .htaccess – если на веб-сервере используются CMS в подкаталогах:, например, в папке /blog/
находится блог на WordPress, а в папке /forum/
находится конференция PHPBB, то оказывается, что на сервере будет не один файл .htaccess
, а несколько – в данном примере три.
/root .htaccess /blog .htaccess /download /forum .htaccess /picture
Файлы .htaccess
в подкаталогах переопределяют директивы, заданные в файле .htaccess
в каталоге более высокого уровня, поэтому директивы редиректа на https потребуется прописать не только в основном файле (в корневом каталоге), но и продублировать в других файлах . htaccess
Проверка работы редиректа на https и решение проблем
Изменение файла .htaccess сопряжено с риском нарушить работу веб-сайта, поэтому следует обязательно проверить файл htaccess даже после небольших правок.
Первым делом нужно проверить код на синтаксические ошибки и опечатки. Все ошибки нужно исправить прежде, чем переходить к следующему шагу.
Затем следует протестировать фрагмент кода, отвечающий за редирект, и убедиться, что преобразование URL происходит корректно. После того, как тест будет пройдён, можно переходить к внесению изменений в файлы htaccess на сайте.
Вносить изменения, то есть добавить код редиректа, необходимо во все файлы .htaccess.
Обновленные файлы лучше проверить на ошибки по ссылке выше.
И, наконец, остаётся проверить работу переадресации с обновленными файлами .htaccess
. Это необходимо сделать для каждого каталога со своим .htaccess
. То есть если на сайте три файла ,htaccess
, как в примере выше, то нURL из корневого каталога сайта, из блога и из форума. На каждой из них должна произойти переадресация с http на https.
Если какой-то из .htaccess не сработал, проверьте, что код в него был добавлен правильно. Для WordPress важно, чтобы код был вставлен до строк WordPress.
После этого автоматический переход на https будет работать для всех страниц сайта.
Узнать больше
How directives are applied — Apache HTTP Server Tutorial: .htaccess files — описание, в каком порядке применяются директивы для нескольких .htaccess в разных каталогах.
Переадресация на https в htaccess, примеры и тестирование
Как сделать редирект с http на https через htaccess
Безопасность. Сегодня это базовое требование к сайту, поэтому SSL-сертификат, гарантирующий безопасное соединение, становится не просто хорошим тоном, а обязательным критерием работы и развития любого web-ресурса. Чтобы без потерь перейти на передачу данных по защищенному протоколу, нужно настроить редирект с http на https. Какими способами это сделать, мы объясним в этой статье.
Что такое редирект
Редирект — это перенаправление с нежелательного адреса на приоритетный. Настраивая автоматическую переадресацию, вы даете серверу команду отдавать по запросу одного URL другой — тот, который считаете более предпочтительным. Как работает принудительный редирект на https?
Человек в браузере кликает по ссылке на сайт X, но эта ссылка размещена еще в беззаботную эру http-протоколов, когда о SSL-сертификатах думали только параноики, а все данные передавались по открытым каналам. С тех пор сайт X перешел на защищенное соединение, а разработчики оформили редирект.
Браузер запрашивает у сервера документ по адресу http://site-x.com, но там прописана команда: вместо устаревшего http://site-x.com отдавать браузеру надежный https://site-x.com. Все это происходит моментально, поэтому пользователь, ничего не заметив, оказывается на правильной странице с защищенным протоколом. Теперь он может вводить свои личные данные, не беспокоясь, что их по дороге перехватят злоумышленники.
Для SEO важно правильно оформлять редиректы, чтобы сайт не упал в ранжировании на поиске, а все плюшки (ссылочная масса, трафик) с исходной страницы (донора) перешли на новую (акцептора). Подробно о разных вариантах переадресации мы писали в статье Узнайте какие бывают редиректы и в каких случаях их нужно настраивать.
Когда требуется редирект на Secure-протокол
Переадресация на безопасный протокол HyperText Transfer Protocol Secure (https) устанавливается после оформления SSL-сертификата.
SSL (Secure Sockets Layer) — криптографический протокол, который гарантирует защищенное соединение между пунктами А и Б — браузером пользователя и сервером, где располагается ваш сайт. Сигнал для пользователя, что вам не безразлична его безопасность и вы подключили SSL-сертификат, — это иконка закрытого замка и адрес, начинающийся с https://. Поисковики могут также предупреждать пользователей, что сайт, на который они хотят перейти, небезопасен. Это отпугивает потенциальных посетителей.
Наличие надежного безопасного соединения критично для интернет-магазинов, банков и всех порталов, имеющих дело с персональными данными своих посетителей. SSL создает условия для конфиденциальности и минимизирует риски перехвата паролей, логинов, информации о банковских карточках и т.д. Но это не значит, что простому информационнику или корпоративному сайту-визитке не нужен SSL-протокол: это весомый фактор ранжирования, и, если вы хотите вывести свою визитку в топ, сертификат, как ни крути, оформлять придется.
Google с 2014 года отдает приоритет сайтам с защищенным протоколом, Яндекс также учитывает этот фактор в распределении мест под солнцем.
Справка Яндекса: «Яндекс старается учитывать все относящиеся к качеству сайта данные, которыми обладает. Безопасность — важный атрибут качества для пользователя, а один из признаков безопасного сайта — использование протокола HTTPS. Выбирая защищенный протокол, владелец сайта заботится о безопасности пользовательских данных, и это может быть учтено в ранжировании».
Подготовка к переезду
- Внутри ресурса все абсолютные ссылки с полным адресом должны быть заменены на относительные (без указания протокола). Например, http://site-x.com/page-1/ меняем на site-x.com/page-1/ или /page-1/.
- В файле с директивами для поисковых краулеров robots.txt нужно переделать строку Host: сюда прописываем URL домена с новым Secure-протоколом: Host: https://site-x.com. Эту директиву Яндекс отменил в 2018 году, но некоторые сеошники продолжают прописывать ее до сих пор — мало ли что. Вдруг однажды поисковики передумают.
- Файлы robots.txt и sitemap.xml должны быть доступны по обоим протоколам и содержать ссылки с защищенным протоколом.
- Адреса http://site-x.com и https://site-x.com поисковый бот считает разными ресурсами. Пока он поймет, что по ним находится одинаковый контент, и объединит обе площадки в группу зеркал, вы потеряете время и позиции в выдаче. Поэтому, получив SSL-сертификат и оформив редирект всех страниц с http на https, нужно сообщить о нововведениях в консолях вебмастеров.
Переезд в Яндекс Вебмастере
- Обзаведитесь SSL-сертификатом (купите, или найдите бесплатный или самоподписанный) и настройте его.
- Добавьте сайт в Яндекс.Вебмастер, если вы еще этого не сделали.
- Перейдите на незащищенную версию, в разделе «Индексирование» → «Переезд сайта» отметьте галочкой пункт «Добавить HTTPS» и сохранить изменения.
- В течение 1–3 недель ждите уведомление о смене главного зеркала у старой версии. После окончательного переезда в Вебмастере все URL будут отдаваться под основным адресом https.
Переезд в Google Search Console
Тут все проще: открываем консоль вебмастера, нажимаем вкладку «Добавить ресурс», в правом окне вносим новый URL с защищенным протоколом, жмем «Продолжить», право собственности подтверждается автоматически, жмем «Готово». Осталось добавить ссылку на новую карту Sitemap, и сайт переехал. В панели должны остаться оба варианта URL: http и https.
А пока суть да дело, нужно настроить редирект. Сделать это можно разными способами.
Как настроить редирект с HTTP на HTTPS через ISPmanager на хостингах
ISPmanager — одна из самых популярных российских панелей управления хостингом и сайтами. Среди прочих опций здесь доступна настройка SSL-перенаправлений. Редирект настраивается за пару шагов:
- Заходим в раздел «Домены» → «WWW-домены».
- Выбираем кандидатуру для безопасного соединения и жмем кнопку «Изменить».
- Ставим галку напротив пунктов «Защищенное соединение (SSL)» и «Перенаправлять HTTP-запросы в HTTPS», жмем OK.
Переадресация с HTTP на HTTPS для семерки самых ходовых хостингов
Редирект без хостинга можно оформить на стороне браузера, используя HTML и JavaScript, но работать такая переадресация будет медленнее. Оформление редиректов на стороне сервера предпочтительнее, т.к. не тормозит скорость загрузки.
Рассмотрим, как настроить редирект с http на https на разных хостингах, изменяя код в файле . htaccess. Здесь команды задаются в модуле mod_rewrite двумя параметрами:
- RewriteCond — это условие, при котором должна выполняться директива RewriteRule.
- RewriteRule — непосредственно директива.
Для разных хостингов параметры прописываются по-разному. Кириллические домены в зоне .рф или .рус нужно перевести в формат Punycode (например, на сервисе Punycode converter).
Найти файл .htaccess можно двумя путями, предварительно разрешив отображение скрытых файлов:
- Через FTP: корневая папка домена → каталог public_html → .htaccess.
- На консоли управления хостингом через «Диспетчер файлов».
Скачайте файл для работы, добавьте туда нужные строчки кода, чтобы установить 301 редирект с http на https, и снова загрузите обновленный .htaccess.
Если вы нигде не нашли файл .htaccess, придется его создать и заполнить.
Все рекомендации по настройке редиректа мы нашли на сайтах хостингов в разделах техподдержки. Ссылки на более подробные рекомендации из первоисточников даны под строчками кода. (.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Подробнее здесь: Настройка сайта для работы по HTTPS.
jino.ru
RewriteEngine On # Если этой строки нет выше
RewriteCond %{HTTP:X-Forwarded-Protocol} !=https
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Подробнее здесь.
Синтаксис серверного редиректа на HTTPS
Единого синтаксиса для настройки серверного редиректа с http на https-протокол через htaccess нет, поэтому иногда приходится перебирать варианты, проверяя, насколько корректно отработает каждый из них. Если на вашем хостинге нет четких указаний по прописыванию директивы, предлагаем 8 вариантов синтаксических конструкций. Какая-нибудь из них да выстрелит.
№ | RewriteCond | RewriteRule |
1 | %{HTTPS} =off | (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L] |
2 | %{SERVER_PORT} !^443$ | . /название_вашей_страницы.php RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
Внимание! Не забудьте вместо фразы «название_вашей_страницы» подставить нужные данные на латинице. Проверка редиректаПосле настройки редиректа с http на https нужно проверить, как он отрабатывается в разных поисковых системах. Самая поверхностная проверка: ввести в адресную строку браузера URL с протоколом http, если редирект сработает, то откроется сайт с правильным адресом https и значком закрытого замка. Но это еще не значит, что переадресация настроена корректно, поэтому рекомендуем более вдумчивую проверку с помощью онлайн-сервиса Redirect Checker. Здесь можно проверить, не работает ли редирект с https на http как-то криво. Если все настроено без косяков, в результатах вы увидите надпись «301 Moved Permanently», если что-то пошло не так и вместо правильного 301 отрабатывается циклический 302 редирект, сервис сообщит об ошибке. Это значит, что надо подбирать другие строчки кода, пока все не получится. При проверке нашего сайта сервис ошибок не нашел Для проверки переадресации в разных поисковых системах выберите нужную из выпадающего списка Sel User-Agent. Есть и другие бесплатные сервисы для быстрой проверки редиректов:
Отсутствие или некорректная настройка 301 редиректа с устаревшей записи домена http на обновленную https может негативно сказаться на ранжировании, т.к. поисковик будет воспринимать страницы с одинаковым контентом как дубли и понижать сайт в выдаче. ВыводРабота сайта по защищенному протоколу SSL — это не только забота о безопасности своего ресурса для пользователей, но и важный фактор ранжирования в поисковых системах. Корректная настройка постоянного 301 редиректа с http-адреса на безопасный протокол https позволяет избежать проблем в продвижении сайта и санкций поисковиков за дубли страниц. Пользователи также отдают предпочтение сайтам с защищенным соединением — никто не хочет утечки конфиденциальной информации. Увидев вместо иконки закрытого замка предупреждение «Не защищено», пользователь, скорее всего, предпочтет сайт конкурента, работающего по безопасному протоколу. Настраивать переадресацию можно разными способами, но предпочтительнее делать это на стороне сервера: или в панели управления хостинга, или, если там нет быстрой настройки, через файл .htaccess. В этом случае редирект не будет тормозить загрузку страниц. После настройки нужно проверить корректность работы переадресации, если все сделано правильно, то в отчете появится запись о 301 редиректе, а страницы будут отдавать код 200. Обсудим сотрудничество?Какие задачи нужно решить: Разработка сайта / интернет-магазина Продвижение (SEO, Директ и т. п.) Контент-маркетинг Поддержка сайта (информационная, техническая) Аудит сайта / интернет-магазина Консультация Как использовать .htaccess для перенаправления на https в cPanel — Сертификаты SSLКак использовать .htaccess для перенаправления на https в cPanel
После установки SSL-сертификата и доступа к сайту через https:// , вы можете сделать его доступным через https:// по умолчанию. Другими словами, набрав domain.com в веб-браузере, пользователь должен быть перенаправлен на https://domain.com для безопасного доступа к сайту. В этой статье мы рассмотрим некоторые из основных типов HTTPS-перенаправления и покажем, как использовать .htaccess для принудительного HTTPS в Cpanel. Сам файл можно найти, если зайти в cPanel >> Файловый менеджер . Там найдите корень документа вашего сайта. Для основных доменов cPanel папка обычно называется «public_html». Если веб-сайт является надстройкой, вы можете найти его корень документа в разделе Дополнительные домены . Когда вы найдете папку, файл .htaccess может уже быть там. Чтобы еще раз проверить это, нажмите Настройки в правом верхнем углу и отметьте Показать скрытые файлы (dotfiles) . Если файл не появился, смело создайте его, нажав +Файл . Не забудьте назвать файл .htaccess , начиная с точки. Чтобы открыть файл, щелкните его правой кнопкой мыши, затем выберите Редактировать . В следующем всплывающем окне также нажмите Изменить . Типы перенаправленийКогда дело доходит до настройки правила перезаписи, полезно знать, что существует постоянный тип перенаправления и временный. Каждый тип обрабатывается поисковыми системами и веб-браузерами по-разному и имеет свой код состояния, который можно явно указать в правиле перезаписи:
ПРИМЕЧАНИЕ . Включение перенаправления 302 на длительный период времени может значительно снизить рейтинг веб-сайта в результатах поиска. Что касается перенаправления HTTP-HTTPS, все запросы к сайту распределяются между http://domain.com и https://domain.com, поскольку оба они индексируются поисковыми системами отдельно. Поэтому в большинстве случаев код состояния 301 предпочтительнее для перенаправлений HTTP-HTTPS. В следующем разделе мы опишем, где именно должен быть указан код состояния. Настройка перезаписи .htaccess: варианты использованияДавайте рассмотрим наиболее распространенные способы настройки перенаправления с HTTP на HTTPS. Включение перенаправления HTTPS в Cpanel для всех сайтовПРИМЕЧАНИЕ . Если у вас уже есть какой-то код в вашем .htaccess, добавьте его над правилами с таким же начальным префиксом. Чтобы перенаправить все сайты в учетной записи cPanel, необходимо добавить один из следующих блоков в файл .htaccess в домашнем каталоге вашей cPanel (‘/home/cpanelusername/’): 9/?(.*) https://%{SERVER_NAME}/$1 [R,L] Этот блок включает возможности перезаписи, проверяет, что исходный запрос еще не содержит https://, и перезаписывает весь запрошенный URL-адрес. , заменив http:// на https:// (например, http://domain.com/subfolder/index.php будет заменено на https://domain.com/subfolder/index.php ). b) RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L] Этот блок работает так же, как и предыдущий, только с помощью другого синтаксиса. Можно использовать любое из вышеупомянутых правил перезаписи, чтобы перенаправить все сайты в учетной записи cPanel. Отключение применения правила перезаписи для определенного сайтаЕсли вам нужно настроить перенаправление для всех сайтов в учетной записи cPanel, кроме example.com, указанный ниже блок кода можно добавить в .htaccess в домашнем каталоге: 9/?(.*) https://%{ИМЯ_СЕРВЕРА}/$1 [П, Л] Первое условие в блоке сопоставляет запрошенный URL-адрес с доменным именем, включенным в условное значение (тот, который НЕ должен перенаправляться), и останавливает перезапись, если они совпадают. В условную директиву можно добавлять доменные имена, разделяя их символом ‘|’ или указать несколько условных директив (см. RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L] .htaccess Force ‘https://’ или ‘https://wwwа) Перенаправляет все запросы http:// и https:// на одну и ту же страницу, но с https://example.com (также перенаправляет с https://www.example.com на https://example.com) b) Перенаправляет все запросы http:// и https:// на одну и ту же страницу, но с https://www (также перенаправляет https://example.com на https://www.example.com) RewriteCond %{HTTPS} !=on 9пример\.com$ .htaccess Force ‘http://’ или ‘http://www.‘а) Перенаправляет всех посетителей сайта на одну и ту же страницу, но с принудительным http:// + перенаправляет http://www.example. перейти на http://example.com RewriteRule .* http://example.com%{REQUEST_URI} [R=301,L] б) Перенаправляет всех посетителей сайта на одну и ту же страницу, но с принудительным http://www + перенаправляет с http://example.com на http://www.example.com RewriteCond %{HTTPS} =на 9пример\.com$ Перенаправление на/с поддоменаа) Перенаправление с example.com или www.example.com (как http://, так и https://) на определенный поддомен RewriteCond %{HTTP_HOST} ^example\. com$ [ИЛИ] 9поддомен\.example\.com$ Перенаправление с http:// на https:// или https://www с режимом CloudFlare Flexible SSLа) Базовое перенаправление с http:// на https://, но этот блок следует использовать вместе с CloudFlare Flexible Режим SSL б) То же правило, но переадресация на https://www RewriteCond %{HTTPS} !=on Включение HTTPS для определенной вложенной папкиИногда вам может потребоваться перенаправить определенную часть веб-сайта, расположенную в определенной вложенной папке, оставив остальную часть сайта без изменений. Для этого вставьте в .htaccess следующий блок: Перезапись двигателя на (в приведенном выше примере «тест» — это рассматриваемая подпапка) Настройка перенаправления для определенного имени файла, независимо от местоположенияЕсли у вас есть несколько страниц с одинаковым именем, расположенных в разных подпапках ( пример index.html используется ниже), вы можете включить перенаправление HTTPS для всех сразу. Сделайте это, применив набор правил, как показано ниже: Перезапись двигателя на Только страницы с именами файлов, соответствующими значению параметра {REQUEST_FILENAME}, будут перенаправлены на HTTPS. Частичная переадресация на https:// а) Перенаправляет весь сайт на https:// кроме одной страницы (example. example\.com$ 9/some_https_page\.html$ Как указать код состояния перенаправления в правиле перезаписиКаждое правило перезаписи заканчивается так называемыми «флагами перезаписи» (указанными в квадратных скобках, например [R,L]). Эти флаги помогают контролировать правильность выполнения процесса перезаписи. Чтобы установить редирект с кодом состояния 301 (постоянный), вам нужно будет присвоить этот код R-флагу в скобках, добавив «= 301». После завершения с помощью этого инструмента можно проверить функционирование перенаправления и его код состояния. apache — перенаправление с http на https — изменения htaccessУ меня есть следующее условие в моем файле .htaccess. Я пытаюсь перенаправить http-страницу на https. Но не повезло. не уверен, что не так ниже: RewriteEngine On RewriteCond %{HTTPS} выкл. RewriteRule (.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] Перенаправление http://mydomain.archinit.com/landing-page/ https://www.newdomain.com/insights/spotlight-on/landing-page любая помощь в том, как это исправить, пожалуйста?
Расположение .htaccess Поместите файл Если по-прежнему не работает…Если по-прежнему не работает, то проблема не в файле .htaccess, а в настройках сервера. Без дополнительной информации я бы не стал гадать. |