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

Про редиректы с www и на https в интернете рассказано много. Однако для того, чтобы создать работоспособный редирект с www на сайт без www, нужно учесть один нюанс:
SSL сертификат должен быть действителен для обоих доменов (с www и без).

А вот и рабочий пример кода, который вы можете использовать для настройки редиректа:

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

Две строки после RewriteEngine on создают переадресацию на сайт без www.

Также убедитесь в том, что у вас настроен редирект с http на https. Это нужно, чтобы у вас была только одна версия сайта, иначе это неблагоприятно скажется на поисковом продвижении.
Такую переадресацию можно выполнить при помощи следующего кода:

RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

Есть также альтернативный вариант:

RewriteCond %{ENV:HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L] 

Не забывайте, что в самом верху, перед правилами RewriteCond и RewriteRule должна быть строка RewriteEngine on

В итоге код htaccess, который создает редирект с www на сайт без www и с http на https выглядит так:

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

Для htaccess есть сборник сниппетов, на все случаи жизни: https://github.com/phanan/htaccess (en)

Также очень рекомендую прочитать статью про правильный переезд на https.
Да, переехать можно и неправильно.

Успехов! Сработал ли у вас редирект, напишите в комментариях.

phpstack.ru

#user 'user10' virtual host 'example.com' configuration file

0BB">charset off
;
    
disable_symlinks if_not_owner from=$root_path;
    
index index.html index.php;
    
root $root_path;
    
set $root_path /var/www/user10/
tyle="color: #007700">/var/www/httpd-logs/example.com.access.log ;
    
error_log /var/www/httpd-logs/example-includes/*.conf;
    include /etc/nginx/vhosts-resources/user10/*.conf;
    location / {
        location ~* ^.+.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
            try_files $uri $uri/ @fallback;
        }
        location / {
            try_files /does_not_exists @fallback;
        }
        location ~ [^/].ph(pd*|tml)$ {
       &nb.
p;/;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Secret 123123;
    }
    listen 77.77.77.77:80;
}
server {
    server_name example.com www.example.com;
    charset off;
    disable_symlinks if_not_owner from=$root_path;
    index index.html index.php;
    root $root_path;
    set $root_path /var/www/user10/data/www/example.com;
    .
.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
            try_files $uri $uri/ @fallback;
        }
        location / {
            try_files /does_not_exists @fallback;
        }
        location ~ [^/].ph(pd*|tml)$ {
            try_files /does_not_exists @fallback;
        }
    }
    location @fallback {
        error_log /dev/null crit;
  &nbs.
/>        proxy_set_header X-Forwarded-Secret 123123;
    }
    listen 77.77.77.77:443;
    ssl on;
    ssl_certificate /var/www/httpd-cert/user10/example.com.crt;
    ssl_certificate_key /var/www/httpd-cert/user10/example.com.key;

forum.ispsystem.ru

ELinks. Настройка

Перейти к страницам: ELinks — Текстовый, или консольный веб браузер. Описание: возможности, скриншоты, где скачать. ELinks. Использование — Как пользоваться браузером ELinks. Что можно делать с помощью ELinks и что нельзя, что может быть настроено, зависит от нескольких моментов. Самое распространенное, это возможности эмулятора терминала / консоли, в которых запускается ELinks и поддержка чего была выбрана в процессе компиляции исходного кода браузера.
некоторых операционных системах (Windows, например) проще и более надежно не подключать некоторые возможности. Далее обсуждается настройка ELinks 0.12pre2 из Package Database дистрибутива Zenwalk Linux (изначально основывался на Slackware, до сих пор сохраняя совместимость с его бинарными пакетами). Данный ELinks вполне типичный среди других версий этого браузера для Linux на настольных PC компьютерах. Пользовательский интерфейс версии ELinks для Windows и ELinks для Linux / некоторых других *nix систем сравнимых версий одинаков. Если ELinks был скомпилирован без какой-то функции или эмулятор терминала / консоль не поддерживает что-то, тогда будет просто невозможно выбрать эту возможность в процессе настройки; или возможно, но она не будет работать. Например, если ELinks скомпилирован без поддержки 256 цветов или консоль не может отображать их, то в меню будет возможно выбрать только 16 или «No colors (mono)». А в остальном ELinks будет работать не хуже. Все настройки ELinks могут быть сделаны через меню браузера — нет необходимости редактировать конфигурационные файлы. Даже если для некоторых тонких настроек все-таки может потребоваться редактирование файла ELinks.conf или даже файлов исходного кода — но это не слишком актуальный вопрос для обычного использования. Меню ELinks скрыто, когда браузер отображает веб-страницу: Чтобы получить доступ к меню, нажать Esc на клавиатуре: Настройки находятся в группе «Setup»: 1 ) «Language» — выбрать язык пользовательского интерфейса ELinks.
зможно выбрать системный язык или какой-то другой. Операционная система и эмулятор терминала / консоль должны быть подготовлены для этих изменений — установлены и настроены соответствующие файлы локализации / интернационализации. Выбрать язык (English в данном примере): Что бы сохранить этот выбор, вновь нажать Esc, затем Setup, потом Save options, затем подтвердить, кликая на OK.

www.kompx.com

HTTPS и редиректы

Рассмотрим пример. Допустим, что у нас есть сайт dnsimple.com. Его канонический URL-адрес — https://dnsimple.com. Тем не менее, существует четыре различных способа, с помощью которых можно подключиться к сайту, и нужно обеспечить, чтобы при любом из них пользователь перенаправлялся на https://dnsimple.com:

Настройка htaccess редиректов HTTP на HTTPS часто является причиной путаницы. Не всегда понятно, как правильно обрабатывать через HTTPS редиректы с WWW на не-WWW (или наоборот), и почему для этого нужен сертификат SSL / TLS. Чтобы правильно настроить эти перенаправления, необходимо понять основные принципы обработки запросов HTTPS.

Далее мы рассмотрим, в каком порядке устанавливается соединение по протоколу HTTPS, как происходит обработка HTTP-запросов и настройка редиректов с поддержкой HTTPS.

Поток запроса HTTPS

На приведенном выше изображении показана схема прохождения запросов / ответов HTTPS. Для простоты мы разбили все действия на три фазы:


  1. На первом этапе клиент и сервер договариваются о деталях шифрования, таких как протокол шифрования и набор шифров. Также происходит обмен информацией, необходимой для переключения на защищенное соединение: открытые ключи, сведения о сертификате и т.д. Эта фаза называется «SSL / TLS рукопожатие»;
  2. На втором этапе клиент готовит HTTP-запрос, шифрует его и отправляет на сервер для обработки. Сервер принимает зашифрованный HTTP-запрос, расшифровывает его, обрабатывает и выдает HTTP response (ответ);
  3. На третьем этапе, сервер шифрует ответ и отправляет его клиенту для обработки. Клиент получает зашифрованный HTTP response, дешифрует и обрабатывает его (например, браузер начинает загружать и отображать элементы).

Эта схема потока редиректа с HTTP на HTTPS применима к любому запросу, независимо от содержимого ответа HTTP.

Выше я написал запрос HTTP и ответ HTTP для определенных целей (обратите внимание, что я использовал HTTP, а не HTTPS). С точки зрения содержимого и структуры важно понимать, что HTTPS-запрос — это HTTP-запрос, но передаваемый через защищенное соединение (TLS / SSL).

HTTPS-согласования и редиректы

Одна из самых распространенных ошибок при настройке HTTPS-редиректов — это предположение, что вам не нужен сертификат SSL при переадресации клиента с одного домена на другой.

Если посмотреть на поток запросов, то видно, что обмен сертификатами SSL и согласование шифрования выполняются на первом этапе. Обратите внимание, что на этом этапе сервер ничего не знает, какая страница нужна клиенту: клиент и сервер решают, как взаимодействовать друг с другом.

После завершения первого этапа, когда клиент и сервер нашли общий язык (протокол шифрования), они могут начать взаимодействовать друг с другом, используя зашифрованное соединение. В этот момент клиент отправляет HTTP-запрос на сервер, а сервер отправляет HTTP-ответ, содержащий редирект.

Не забывайте, что редирект — это HTTP-ответ с кодом 301 (иногда 302 или 307):

Перед тем, как сделать редирект с HTTPS на HTTP, помните, что, если нужно создать редирект для всего домена, то необходим валидный сертификат SSL для перенаправляемого домена. Для согласования шифрования требуется сертификат SSL, и происходит оно до того, как запрос был обработан, а ответ о редиректе возвращен клиенту.

Если бы все происходило иначе, то редирект бы обрабатывался перед проверкой сертификата SSL. Тогда клиент и сервер были бы вынуждены общаться с помощью обычного HTTP-соединения, которое не шифруется.

Если нужно перенаправить клиента с любой страницы домена https://www.example.com на другую, необходим установленный на сервере валидный сертификат SSL, который распространяется на весь домен www.example.com.

Например, чтобы перенаправить клиента с https://www.example.com на https://example.com, необходимо иметь сертификат, который распространяется на оба или два отдельных сертификата (для каждого хоста соответственно).

Стратегии HTTPS-редиректов

Мы рассмотрели, как обрабатывается редирект с HTTP на HTTPS через htaccess после SSL / TLS согласования. А также выяснили, что для перенаправления клиентов с сайта или страницы на HTTPS нужен валидный сертификат SSL, который охватывает оба домена. Далее я расскажу об общих стратегиях настройки HTTPS-редиректов.

Существует два типа настройки редиректов с HTTPS:

  1. Редирект на уровне сервера;
  2. Редирект на уровне приложений.

Термин сервер обозначает любой сервер, который находится перед веб-приложением и обрабатывает входящий HTTP-запрос. Например, front-end сервер, сервер балансировки нагрузки или единичного приложения.

Термин приложение обозначает веб-приложение, которое может быть либо столь же простым, как PHP-скрипт, либо более сложным, таким как серверное Unicorn-приложение интерпретации Ruby on Rails.

Выполнение HTTPS-редиректов на уровне сервера

Выполнение HTTPS-редиректов на уровне сервера является более предпочтительным. В этом случае сервер, на котором установлен сертификат SSL, принимает зашифрованный HTTP-запрос и возвращает зашифрованный HTTP-ответ о редиректе в соответствии с параметрами конфигурации без соединения с сервером приложения или выполнения кода приложения.

Такой подход является более быстрым, так как сервер может обрабатывать редирект без взаимодействия с приложением. В то же время конфигурация серверов менее гибкая по сравнению с тем, что можно сделать с помощью полноценного языка программирования.
htaccess редирект HTTP на HTTPS на уровне сервера используется для массового перенаправления. Например, редиректа с WWW на не-WWW версию домена с HTTPS (или наоборот).

Следующий фрагмент кода является примером конфигурации Nginx, в котором задается редирект с http://example.com, http://www.example.com и https://www.example.com на https://example.com:

Реализация редиректа на уровне сервера более предпочтительна, но она не всегда осуществима, поскольку вы можете не иметь доступа к конфигурации сервера. Это касается виртуального хостинга или таких платформ, как Heroku, Azure или Google Platform.

Выполнение HTTPS-редиректа на уровне приложений

Когда у вас нет доступа к конфигурации сервера, или логика редиректа является более сложной, необходимо обрабатывать редирект с HTTP на HTTPS на уровне приложений.

Такой подход немного медленнее, потому что сервер должен принять запрос, обработать код приложения (или взаимодействовать с сервером приложений) и вернуть ответ.

То, как выполняется редирект на уровне приложений, зависит от используемого языка программирования и стека. Вот несколько примеров.

Пакет Goland и net/http

Можно использовать http.Redirect.

Ruby on Rails

Можно настроить редирект на уровне маршрутизатора, использовать промежуточное программное обеспечение Rack или метод redirect_to внутри контроллера:

PHP

Используйте функцию header, чтобы отправить HTTP-заголовок перенаправления:

В некоторых случаях это единственно возможный подход. Например, если нужно перенаправить клиентов с WWW на не-WWW версию домена, с HTTPS на Heroku или Azure (или наоборот), то придется указать оба домена в одном приложении, установить сертификат и через условия обрабатывать редирект на уровне приложений.

Альтернативные способы выполнения HTTPS-редиректа

Существует несколько альтернативных способов редиректа с HTTP на HTTPS.

В некоторых ситуациях отсутствует доступ к конфигурации сервера, а платформа, на которой размещен сайт, не позволяет использовать язык программирования. В качестве типичного примера можно привести Amazon S3 для размещения статических сайтов. В этом случае нужно выяснить, предоставляет ли платформа параметры HTTPS-редиректов, которые можно настроить.

Другой вариант заключается в использовании автономного, независимого приложения для редиректов. Например, если нужно перенаправить клиентов с https://alpha.com на https://beta.com. Тогда для домена alpha.com в качестве DNS можно указать другой сервис или сервер, на котором размещен beta.com. А также настроить редирект на уровне сервера или установить приложение, которое будет выступать в качестве редиректора. При этом также необходим валидный сертификат для alpha.com, который будет установлен там, где необходимо осуществить редирект.

Заключение

Учитывая, что HTTPS становится стандартом для сайтов, важно надлежащим образом настроить соответствующие редиректы для предотвращения появления дублированного контента и перевода сайта на использование HTTPS-версии.

Для создания HTTPS-редиректов требуются дополнительные действия, чтобы перенаправляемый сервер был в состоянии обработать входящие HTTPS-запросы и отправить правильный ответ о редиректе.

Существует много способов обработки URL-редиректов, и, надеюсь, эта статья помогла вам найти подходящий вариант, как сделать редирект с HTTPS на HTTP.

Перевод статьи «Redirects with HTTPS» был подготовлен дружной командой проекта Сайтостроение от А до Я.

www.internet-technologies.ru

Уже ни для кого не секрет, что Гугл и Яндекс начинают выдавать «бонусы» сайтам, у которых установлен сертификат безопасности 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.

alittlebit.ru

Добрый день. Не могу найти 301 редирект со страниц без слеша на слеш, ваши варианты тоже не подошли, можете помочь? Ниже предоставляю свой файл .htaccess

AddDefaultCharset UTF-8
DirectoryIndex index.php

Options All -Indexes

Header set Cache-Control “max-age=43200”

Header set Cache-Control “max-age=604800”

Header set Cache-Control “max-age=2592000”

Header unset Cache-Control

ExpiresActive On
ExpiresDefault “access plus 5 seconds”
ExpiresByType image/x-icon “access plus 2592000 seconds”
ExpiresByType image/jpeg “access plus 2592000 seconds”
ExpiresByType image/png “access plus 2592000 seconds”
ExpiresByType image/gif “access plus 2592000 seconds”
ExpiresByType application/x-shockwave-flash “access plus 2592000 seconds”
ExpiresByType text/css “access plus 604800 seconds”
ExpiresByType text/javascript “access plus 604800 seconds”
ExpiresByType application/javascript “access plus 604800 seconds”
ExpiresByType application/x-javascript “access plus 604800 seconds”
ExpiresByType text/html “access plus 43200 seconds”
ExpiresByType application/xhtml+xml “access plus 600 seconds”

php_value post_max_size 80M
php_value upload_max_filesize 50M

ErrorDocument 404 http://mir-gardin.com.ua/404.php
RewriteEngine on

RewriteCond %{HTTP_HOST} ^mir-gardin.com.ua$ [NC]

RewriteBase /
RewriteRule ^.htaccess$ – [F]

RewriteRule ^admin/$ /admin/index.php [L]
RewriteRule ^admin/promotion$ /admin/promotion.php [L]
RewriteRule ^admin/promotion/$ /admin/promotion.php [L]
RewriteRule ^admin/services$ /admin/services.php [L]
RewriteRule ^admin/services/$ /admin/services.php [L]
RewriteRule ^admin/main$ /admin/main.php [L]
RewriteRule ^admin/main/$ /admin/main.php [L]
RewriteRule ^admin/catalog$ /admin/catalog.php [L]
RewriteRule ^admin/catalog/$ /admin/catalog.php [L]
RewriteRule ^admin/contacts$ /admin/contacts.php [L]
RewriteRule ^admin/contacts/$ /admin/contacts.php [L]
RewriteRule ^admin/news$ /admin/news.php [L]
RewriteRule ^admin/news/$ /admin/news.php [L]
RewriteRule ^admin/about_us$ /admin/about_us.php [L]
RewriteRule ^admin/about_us/$ /admin/about_us.php [L]
RewriteRule ^admin/pay$ /admin/pay.php [L]
RewriteRule ^admin/pay/$ /admin/pay.php [L]
RewriteRule ^admin/reviews$ /admin/reviews.php [L]
RewriteRule ^admin/reviews/$ /admin/reviews.php [L]
RewriteRule ^admin/our_works$ /admin/faq.php [L]
RewriteRule ^admin/our_works/$ /admin/faq.php [L]
RewriteRule ^admin/producers$ /admin/producers.php [L]
RewriteRule ^admin/producers/$ /admin/producers.php [L]
RewriteRule ^admin/fotogallery$ /admin/fotogallery.php [L]
RewriteRule ^admin/fotogallery/$ /admin/fotogallery.php [L]
RewriteRule ^admin/header$ /admin/header.php [L]
RewriteRule ^admin/header/$ /admin/header.php [L]
RewriteRule ^admin/menu$ /admin/menu.php [L]
RewriteRule ^admin/menu/$ /admin/menu.php [L]
RewriteRule ^admin/options_lr$ /admin/options_lr.php [L]
RewriteRule ^admin/options_lr/$ /admin/options_lr.php [L]
RewriteRule ^admin/modules$ /admin/modules.php [L]
RewriteRule ^admin/modules/$ /admin/modules.php [L]
RewriteRule ^admin/footer$ /admin/footer.php [L]
RewriteRule ^admin/footer/$ /admin/footer.php [L]
RewriteRule ^admin/per_page$ /admin/per_page.php [L]
RewriteRule ^admin/per_page/$ /admin/per_page.php [L]
RewriteRule ^admin/rights$ /admin/rights.php [L]
RewriteRule ^admin/rights$ /admin/rights.php [L]
RewriteRule ^admin/user_data$ /admin/user_data.php [L]
RewriteRule ^admin/user_data/$ /admin/user_data.php [L]
RewriteRule ^admin/user_files$ /admin/user_files.php [L]
RewriteRule ^admin/user_files/$ /admin/user_files.php [L]
RewriteRule ^admin/meta$ /admin/meta.php [L]
RewriteRule ^admin/meta/$ /admin/meta.php [L]
RewriteRule ^admin/fav$ /admin/fav.php [L]
RewriteRule ^admin/fav/$ /admin/fav.php [L]
RewriteRule ^admin/files$ /admin/files.php [L]
RewriteRule ^admin/files/$ /admin/files.php [L]
RewriteRule ^admin/articles$ /admin/articles.php [L]
RewriteRule ^admin/articles/$ /admin/articles.php [L]

RewriteRule ^$ /index.php [L]
#RewriteRule ^404$ /404.php [L]

RewriteRule ^registration$ /registration.php [L]
RewriteRule ^registration/$ /registration.php [L]
RewriteRule ^userpanel$ /userpanel.php [L]
RewriteRule ^userpanel/$ /userpanel.php [L]
RewriteRule ^forgot_password$ /forgot_password.php [L]
RewriteRule ^forgot_password/$ /forgot_password.php [L]

RewriteRule ^feedback$ /feedback.php [L]
RewriteRule ^feedback/$ /feedback.php [L]

RewriteRule ^about_us$ /about.php [L]
RewriteRule ^about_us/$ /about.php [L]

RewriteRule ^articles$ /articles.php?page=1 [L]
RewriteRule ^articles/$ /articles.php?page=1 [L]
RewriteRule ^articles/page$ /articles.php?page=1 [L]
RewriteRule ^articles/page/$ /articles.php?page=1 [L]
RewriteRule ^articles/page/([0-9]+)/? /articles.php?page=$1 [L]

RewriteRule ^articles/topic/(.*)/? /view_article.php?id=$1 [L]

RewriteRule ^cart$ /cart.php [L]
RewriteRule ^cart/$ /cart.php [L]

RewriteRule ^catalog$ /catalog.php?page=1 [L]
RewriteRule ^catalog/$ /catalog.php?page=1 [L]
RewriteRule ^catalog/page$ /catalog.php?page=1 [L]
RewriteRule ^catalog/page/$ /catalog.php?page=1 [L]
RewriteRule ^catalog/page/([0-9]+)/? /catalog.php?page=$1 [L]

RewriteRule ^catalog/category/(.*)/page/([0-9]+)/? /catalog_by_cats.php?cat=$1&page=$2 [L]
RewriteRule ^catalog/category/(.*)? /catalog_by_cats.php?cat=$1&page=1 [L]

RewriteRule ^catalog/subcategory/(.*)/page/([0-9]+)/? /catalog_by_subcats.php?cat=$1&page=$2 [L]
RewriteRule ^catalog/subcategory/(.*)? /catalog_by_subcats.php?cat=$1&page=1 [L]

RewriteRule ^catalog/view/(.*)/? /view_item.php?id=$1 [L]

RewriteRule ^catalog/view_all/(.*)/view/(.*)/? /view_all.php?type=$1&cat=$2 [L]
RewriteRule ^catalog/view_all/(.*)? /view_all.php?type=all&cat=0 [L]

RewriteRule ^contacts$ /contacts.php [L]
RewriteRule ^contacts/$ /contacts.php [L]

RewriteRule ^our_works$ /faq.php [L]
RewriteRule ^our_works/$ /faq.php [L]

RewriteRule ^news$ /news.php?page=1 [L]
RewriteRule ^news/$ /news.php?page=1 [L]
RewriteRule ^news/page$ /news.php?page=1 [L]
RewriteRule ^news/page/$ /news.php?page=1 [L]
RewriteRule ^news/page/([0-9]+)/? /news.php?page=$1 [L]

RewriteRule ^news/topic/(.*)/? /view_news.php?id=$1 [L]

RewriteRule ^pay$ /pay.php [L]
RewriteRule ^pay/$ /pay.php [L]

RewriteRule ^producers/(.*)/page/([0-9]+)/? /producers.php?id=$1&page=$2 [L]
RewriteRule ^producers/(.*)? /producers.php?id=$1&page=1 [L]
RewriteRule ^producers$ /producers.php [L]
RewriteRule ^producers/$ /producers.php [L]

RewriteRule ^reviews$ /reviews.php [L]
RewriteRule ^reviews/$ /reviews.php [L]

RewriteRule ^search/(.*)/? /search.php?word=$1 [L]

RewriteRule ^services$ /services.php [L]
RewriteRule ^services/$ /services.php [L]

RewriteRule ^thanks$ /thanks.php [L]
RewriteRule ^thanks/$ /thanks.php [L]

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

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/
RewriteRule ^index.php$ http://mir-gardin.com.ua/ [R=301,L]

web-optimizator.com

Учетные записи Windows используют файлы web.config для перенаправления.

Примечание. Если вам нужно создать файл web.config, вы можете использовать файловый менеджер вашей панели управления (Web и Classic/Plesk).

Использование следующего кода в файле web.config автоматически перенаправляет посетителей на HTTPS-версию вашего сайта:

<configuration> <system.webServer> <rewrite>  <rules>  <rule name="HTTP to HTTPS redirect" stopProcessing="true">   <match url="(.*)" />   <conditions>   <add input="{HTTPS}" pattern="off" ignoreCase="true" />  </conditions>   <action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" /> </rule>   </rules> </rewrite> </system.webServer> </configuration> 

Если у вас есть существующий файл web.config:

Убедитесь, что у вас есть разделы (т.е. открывающие и закрывающие теги) для: system.webServer(который содержит переписывание) переписать (который содержит правила) правила (который содержит одну или несколько разделов правил) Вставьте любой из тех разделов, которые не существуют. Вставьте раздел правил, включая совпадение, условия и действие, внутри раздела правил.   Примечание. Вы вставляете правило (без ‘s’) внутри раздела правил (с ‘s’).

qaru.site

Редиректы

Редирект наверное лучше всего настроить через .htaccess, путем вставки такой конструкции перед правилами WordPress. А лучше перед всеми правилами, т.е. в самое начало файла:

# SSL: 301 redirect to https from http <IfModule mod_rewrite.c> 	RewriteEngine On 	RewriteCond %{SERVER_PORT} !^443$ 	RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] </IfModule>

Еще вариант:

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

Еще вариант:

RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Еще вариант:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /(.*) HTTP/ [NC] RewriteCond %{HTTPS} off [NC] RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,QSA,L]

Тут важно, что устанавливается 301 редирект, в сети посмотрел эту тему, кое-где его не используют, а он нужен!

Также, можно установить редирект в PHP, вместе с редиректом c .htaccess. Пригодится, если по какой-то причине редирект с апача слетит, чтобы PHP был на подстраховке…

## redirect с http на https add_action('init', 'http_to_https_redirect'); function http_to_https_redirect(){ 	if( is_ssl() ) return;  	if ( 0 === strpos($_SERVER['REQUEST_URI'], 'http') ) 		wp_redirect( set_url_scheme( $_SERVER['REQUEST_URI'], 'https' ), 301 ); 	else 		wp_redirect( 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 301 );  	exit; }

Изменение URL в контенте

В сети видел предложения заменять http на https прямо в базе данных. Я думаю это не лучшее решение, потому что возможно в будущем вы откажетесь от SSL и тогда нужно будет все менять обратно… Поэтому лучше делать замену на лету, таким кодом (он быстрый):

add_filter('the_content', 'replace_url_to_https', 30); function replace_url_to_https( $text ){ 	$text = preg_replace('~http(://(?:www.)?'. preg_quote($_SERVER['HTTP_HOST']) .')~', 'https1', $text ); 	return $text; }

Как вы, наверное, понимаете функцию replace_url_to_https() можно будет применить к любому тексту, где нужно заменить текст http://ваш-сайт.ru/* текст на текст https://ваш-сайт.ru/* текст. Она меняет все без разбора, будь то картинки или что-то еще, но только для URL относящихся к текущему домену…

Изменение URL других ссылок

Вообще WordPress автоматически подстраивается под https протокол текущей страницы и все ссылки должны измениться автоматом. Поэтому нет необходимости изменять даже протоколы в ссылках: URL сайта и URL WordPress (в настройках). Их протокол меняется налету…

Но если этого не произошло (протокол страницы https, но в ней есть ссылки http), то для смены протокола отдельных ссылок в WP есть функция set_url_scheme().

Пример:

echo set_url_scheme( 'http://site.ru/foo', 'https' ); // https://site.ru/foo

Корневая функция на основе которой ставиться протокол всех ссылок — это is_ssl(). Влияя на нее мы может влиять на все ссылки, при условии, что они жестко не прописаны в HTML, а выводятся через различные функции WordPress. Например, следующим кодом мы можем, жестко указать протокол https для всех ссылок на странице, даже если протокол страницы http:

$_SERVER[ 'HTTPS' ] = 'on'; // чтобы is_ssl() всегда возвращала true

Вызвать такой код нужно как можно раньше, до подключения плагинов. И наверное перед его вызовом нужно сделать какие-то проверки. Этот код — это просто пример…

Плагины

Как обычно, можно использовать плагины (я их не пробовал)…

Easy HTTPS Redirection — заглянул в код, вроде бы как раз то что вам нужно…

WordPress HTTPS (SSL) — вроде тоже хорош, правда не обновляется уже давно. Он, как я понял, заменяет все ссылки во всем HTML документе, работает как комбаин: много лишних операций, но может это и нужно, потому что удобно…

wp-kama.ru


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Adblock detector