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


Приветствую вас на сайте Impuls-Web!

Сегодня мы рассмотрим последний этап перевода сайта на SSL-сертификат, в котором нам нужно настроить редирект с http на https, или, другими словами, перенаправление с нашего прежнего адреса, начинающегося с http://, на новый адрес по протоколу HTTPS.

В предыдущих статьях я рассматривала процесс получения у установки SSL сертификата. Если вы их не читали – вот ссылки:
Нужен ли SSL-сертификат для сайта?
Как получить бесплатно SSL-сертификат для сайта?
Как получить SSL сертификат?
Как установить SSL-сертификат на хостинг?

Переадресация на https через htaccess

Для того, что бы настроить редирект с http на https, вам нужно, при помощи программы Notepad++, в корне вашего сайта открыть файл .htaccess, и далее, в самом начале этого файла, прописать один из нескольких вариантов перенаправления.

Как пользоваться Notepad++ и настроить для него FTP-подключение я рассказывала в одной из прошлых статей, с которой вы можете ознакомиться по этой ссылке:

Редактирование файлов сайта в Notepad++

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

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


Мне удалось найти семь основных вариантов, которые используют для настройки редиректа для HTTPS протокола:

Вариант 1

Вариант 2

Вариант 3

Вариант 4

Вариант 5

Вариант 6

Вариант 7

Вариант 8

После вставки одного из этих вариантов в файл .htaccess, сохраняете изменения.

Проверка редиректа

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

Так же, вы можете воспользоваться одним из онлайн-сервисов, которые позволяют просмотреть правильность выполнения редиректа. Например, Redirect Checker. Для выполнения проверки вам нужно:

  1. 1.Перейти на страницу онлайн-сервиса по этой ссылке
  2. 2.В поле для ввода указать адрес, с которого должно осуществляться перенаправление в формате http://имя-сайта.ру .
  3. 3.А затем нажать на кнопку «Analyse».

В результате сервис вам выдаст отчет о правильности работы перенаправления. В моем случае редирект работает не правильно:

Перенаправление вроде бы как происходит, но это происходит несколько раз, и почему то происходит не 301 редирект, а 302. Насколько я поняла, это называется циклический редирект, и такого быть не должно. Поэтому мне нужно пробовать другие варианты.

Так же, вы можете проверить правильность выполнения редиректа для конкретной поисковой системы. Для этого, перед нажатием на кнопку «Analyse», нужно выбрать из выпадающего списка название нужного поискового робота:

После того, как вы добавите свой сайт с протоколом HTTPS в поисковые системы, укажите основное зеркало, дождетесь переиндексации и правильно настроите 301-редирект, ваш переезд на протокол HTTPS можно будет считать завершенным. Для крупного сайта такой переезд может занять от нескольких недель, до нескольких месяцев. Все будет зависеть от того, как долго яндекс будет производить склейку зеркал.

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

Я надеюсь, что данная статья поможет вам правильно настроить редирект для HTTPS –протокола и осуществить переход на SSL-сертификат с наименьшими потерями. Если данная статья вам понравилась, делайте репост в социальные сети и подписывайтесь на мою рассылку. Желаю вам успешного переезда и до встречи в следующих статьях.


С уважением Юлия Гусарь

impuls-web.ru

Про редиректы с 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
server {
    <.


tyle="color: #0000BB">disable_symlinks if_not_owner from=$root_path;
    
index index.html index.php;
    
root $root_path;
    
set $root_path /var/www/user10/data/www

/httpd-logs/example.com.access.log ;
    
error_log /var/www/httpd-logs/example.com.

000">/*.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)$ {
            try_files /does_not_exists @fallback;
   &nbs.

        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;
    ssi on;
    access_log /var/www/httpd-logs/example.com.access.log&.

bsp;        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;
        proxy_pass http://127.0.0.1:8080;
    &n.

;
    }
    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

Введение

Ниже я покажу, как перенаправить сайт с www на без-www (или наоборот) и с http на https, используя конфигурацию сервера Apache. Чтобы стало понятнее, конфигурация будет перенаправлять следующие имена хостов:

на

Также я покажу небольшое изменение для перенаправления без-WWW на версию с WWW, если вы предпочитаете WWW.

Конфигурация Apache

Перед тем, как сделать редирект с https на http, добавьте следующее правило перенаправления в файл конфигурации Apache (если у вас есть доступ к нему), либо в файл .htaccess, расположенный в корневом каталоге вашего сайта:

Если вместо example.com вы хотите использовать по умолчанию URL www.example.com, то просто измените третью и пятую строки:

Как это работает?

Попробуем разобраться, как работает эта конфигурация htaccess редиректа http на https. Это поможет внести необходимые изменения:

Первая строка позволяет Apache запустить механизм преобразования http-ссылок, необходимый для выполнения перенаправления:

Эти две строки — условия перенаправления, они используются для определения того, должен ли запрос быть перенаправлен. Если любое из этих двух условий возвратит true, то Apache выполнит перенаправление, поскольку условия соединяются с помощью [OR].

Первое условие определяет, использует ли запрос URL не-HTTPS. Второе условие определяет, использует ли запрос URL www. Заметьте, я использовал www.а не www., потому что образец является регулярным выражением и точка здесь используется для экранирования. Следовательно, ее нужно оставить:

Четвертая строка — она соответствует имени хоста входящего запроса, и разделяет его на www часть (если таковая имеется), и остальную часть имени хоста. Мы будем ссылаться на нее позже с помощью %1 в RewriteRule.

Если вы знаете имя хоста заранее, то можно улучшить правило редиректа с http на https, встроив URL и пропустив это условие (пример ниже):

RewriteRule – центральный элемент перенаправления. С помощью этой строки мы предписываем Apache перенаправить любой запрос на новый URL, который состоит из:

Все эти маркеры соединены друг с другом, и представляют собой конечный URL перенаправления. В конце мы добавляем три флага:

Замечания

В моём примере htaccess редиректа http на https используется дополнительная строка RewriteCond, чтобы извлечь имя хоста, а не подставлять имя в правило. Если чувствуете, что для вас это — потеря производительности, то можете встроить хост непосредственно в правило:

Заключение

В данной статье представлена простая конфигурация перенаправления WWW и не-HTTPS запросов для домена сайта. Таким образом можно избежать проблем с дублированием контента в поисковых системах.

Перевод статьи “Apache redirect www to non-www and HTTP to HTTPS” был подготовлен дружной командой проекта Сайтостроение от А до Я.

www.internet-technologies.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

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

Редиректы

Редирект наверное лучше всего настроить через .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 %{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 для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.