Поддержка Проблемы и решения Проблема с редиректом на HTTPS

  • Решено noindex

    (@noindex)


    Всем привет!
    На сервере настроили SSL, при наборе адреса https://www.site.ru — все работает корректно
    Решил добавить редирект с http на https через .haccess
    По адресу https://toster.ru/q/174797 нашел несколько вариантов, перепробовал все — ни один не работает.
    Во всех случаях редирект происходит, но сайт открывается жалобой на слишком большое кол-во редиректов — http://prntscr.com/evwhvh

    Начал крутить все способы более подробно.
    Один способ после некоторых манипуляций заработал, но отказали ЧПУ ссылки.
    Содержимое htaccess

    
    RewriteCond %{ENV:HTTPS} !on
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    
    </IfModule>
    
    # END WordPress
    

    Редирект на https начинает нормально работать если убрать
    RewriteEngine On
    Но при этом отказывают ссылки.
    Я в директивах htaccess понимаю слабо, скорее всего ошибка плевая, ламерская, но понять в чем она не могу…

    Заранее благодарен за помощь!

Просмотр 15 ответов — с 1 по 15 (всего 45)
  • Решил добавить редирект с http на https через .haccess

    От нечего делать?
    Достаточно указать адреса в настройках ВП. Если напрягает mixetcontent, то можно по контенту пройтись https://wordpress.org/plugins/search-regex/ и заменить ссылки на протоколоензависимые. (<a href="//site.tld/xxxx/">).

    @sevlad, смешанный контент не напрягает, там все уже заменено.
    Напрягает отсутствие переадресации.
    В настройках сайта адреса забиты с https ( http://prntscr.com/evxd4r ), но редиректа при заходе на http не происходит.
    Сайт просто открывается по HTTP.

    Что странно — при попытке зайти в админку по HTTP редирект на HTTPS срабатывает.
    Может редирект дополнительно в теме должен реализовываться и одного htaccess не достаточно?
    Тема у нас кастомная.

    [офтоп]

    Напрягает отсутствие переадресации.

    Вы извините, но надо расслабиться 🙂

    Вообще юзеру нужно давать выбор — каким протоколом пользоваться. Но у Вас этого не будет, тк все ссылки в https.
    Принудительного же редиректа никто не требует. Вообще (ну кроме биллинга и тп). И никаких бонусов https никому не даёт.

    См https://yandex.ru/blog/platon/delikatnyy-pereezd-na-https-ili-o-chem-esche-stoit-znat

    Впрочем, я это так, просто рекомендации. Вы можете поступать как Вам угодно.
    [/офтоп]

    @sevlad,

    Вообще юзеру нужно давать выбор — каким протоколом пользоваться. Но у Вас этого не будет, тк все ссылки в https.
    Принудительного же редиректа никто не требует. Вообще (ну кроме биллинга и тп). И никаких бонусов https никому не даёт.

    См https://yandex.ru/blog/platon/delikatnyy-pereezd-na-https-ili-o-chem-esche-stoit-znat

    Попробуйте зайти на тот же Яндекс по незащищенному протоколу 🙂
    http://www.yandex.ru

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

    Модератор Yuri

    (@yube)

    В ISPmanager есть птичка «Перенаправлять HTTP-запросы в HTTPS».

    Где нет ISPm с птичкой, у меня работает вот такой .htaccess

    
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    </IfModule>
    
    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    
    # END WordPress
    

    попробуйте так:

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

    исключение для robots.txt — там должен быть host с ссылкой на https — это надо для яндекса.

    @yube, ISP нету, пока сидим на shared хостинге.
    К сожалению Ваша конструкция не работает.

    @flector, и эта конструкция не работает…

    Может какой плагин мешает?
    И того что могу предположить, установлен Polylang (сайт мультиязычный, языки на поддоменах) и «404 to 301″…
    «404 to 301» пробовал отключать ничего не помогло, Polylang отключить не могу, шаблон и несколько плагинов завязаны на нем, при отключении сайт выпадает в 500 ошибку.

    • Ответ изменён 7 лет, 1 месяц назад пользователем noindex.

    а куда вы код засунули?
    надо до кода wordpress.

    Модератор Yuri

    (@yube)

    ISP нету, пока сидим на shared хостинге.

    У меня тоже шаред 🙂

    Всё как в первом сообщении, пред кодом wordpress.

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

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ — [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    </IfModule>

    # END WordPress`
    `
    Во всех вариантах htaccess происходит одно и то же — десяток 301 редиректов на https://www.site.ru

    в настройках сайта в общих — урлы указаны через https?

    даже если да — все равно зайдите в пермалинки и нажмите «сохранить изменения». затем удалите куки сайта и попробуйте еще раз.

    • Ответ изменён 7 лет, 1 месяц назад пользователем Flector.

    @yube, я сталкивался с ISP только на VPS/VDS.
    Хотя конечно, панель она и есть панель…

    ну ISP охрененно удобная панель по сравнению со всякими кривыми cpanel и прочими. была бы она еще не такая дорогая или хотя бы с настоящей вечной лицензией, эх.

    @flector, на скриншоте видно что урлы с https — http://prntscr.com/evxd4r
    В постоянных ссылках нажал сохранить.
    Куки почистил (хотя проверяю на всякий случай в Private mode в т.ч.)
    Эффекта нет :((

    Что-то прям беда какая-то..
    Я даже воспользовался советом с тостера

    Добавьте в wp-config.php в самое начало (после <?php ):

    $_SERVER['HTTPS'] = 'on';

    Плюс пониже после define всяких (до текста «/* Это всё, дальше не редактируем. Успехов! */»):

    define('FORCE_SSL_ADMIN', true);
    define('FORCE_SSL_LOGIN', true);
    if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
           $_SERVER['HTTPS']='on';

    Не помогло

Просмотр 15 ответов — с 1 по 15 (всего 45)
  • Тема «Проблема с редиректом на HTTPS» закрыта для новых ответов.