Поддержка Проблемы и решения http и https вперемешку — откуда?

  • Народ, спасайте, пока я не свихнулся. Грешил уже на плагины и темы, дважды сносил WP в надежде, что «с нуля» все нормально будет. Нет.

    SSL-сертификат установлен. На пустой сайт закатываю htaccess для редиректа на https

    RewriteEngine On
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

    Проверяю — редиректит нормально.
    Заливаю свежую версию движка, устанавливаю (с https), настраиваю.
    В настройках адрес указан с https.

    Настраиваю ЧПУ.
    Все, с этого момента начинается чехарда. Если не убрать из htaccess указанные строки, то при переходе на любую страницу пользователя редиректит на главную. Если же строки убрать, то получается смешанное содержимое и отсутствие редиректов на https — именно в таком состоянии сейчас сайт и находится.

    Я понять не могу, ну откуда там смешанному содержимому взяться вообще, откуда http вылазит? Ведь с нуля все ставится, плагинов даже нет никаких пока.

    На настоящий момент htaccess выглядит так:

    #RewriteEngine On
    #RewriteCond %{SERVER_PORT} !^443$
    #RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
    # 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
    • Тема изменена 1 год, 6 месяцев назад пользователем siarzhukby.

    Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]

Просмотр 15 ответов — с 1 по 15 (всего 18)
  • Модератор Yui

    (@fierevere)

    ゆい

    сайт точно «свежий» ?

    попробуйте все же сделать полную замену по всем таблицам базы
    плагином https://ru.wordpress.org/plugins/better-search-replace/

    
    http://astion.by

    на

    
    https://astion.by

    Я сносил все под ноль. Даже базу удалял и заново создавал.
    Сейчас попробую плагин.

    Нет, не находит ничего. Я уже и через phpmyadmin искал.

    Модератор Yui

    (@fierevere)

    ゆい

    это очень странно, потому что главная у вас нормальная, а все остальные пытаются подсунуть http://
    На хостинге кеш какой-то есть?

    Нет кэша.

    Модератор Yui

    (@fierevere)

    ゆい

    https://ru.wordpress.org/plugins/ssl-insecure-content-fixer/

    плагин поможет ? Хотя конечно все должно и без него быть нормально

    Помогает он только в том случае, если установить «Определение HTTPS — невозможно определить HTTPS»

    Что это значит, я не совсем понял.

    Модератор Yui

    (@fierevere)

    ゆい

    скорее всего значит то, что апач у вас не устанавливает переменные в окружение о том, что используется https://

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

    вы можете отключить плагин и установить нужную переменную (выше) в wp-config.php
    можно сразу на второй строке, сразу после <?php
    да, это косяк хостинга

    Модератор Yui

    (@fierevere)

    ゆい

    Либо вот такой .htaccess

    <IfDefine SSL>
      SetEnv HTTPS "on"
      SetEnv HTTP_X_FORWARDED_PROTO "https"
    </IfDefine>
    <IfDefine !SSL>
      SetEnv HTTPS "off"
      SetEnv HTTP_X_FORWARDED_PROTO "http"
    </IfDefine>
    
    RewriteEngine On
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
    # 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

    можно тоже попробовать
    либо пнуть ТП хостинга чтобы исправили конфигурацию для вашего сервера на порту 443, чтобы устанавливалось HTTPS on в переменные

    Спасибо! Похоже, что помогло
    $_SERVER['HTTPS']='on';

    Хотя, если раскомментировать рерайты в htaccess, то все равно перекидывает на главную вместо внутренних. Но это должно быть уже не критично, мне кажется — не буду раскомментировать.

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

    Хостера пинать буду в любом случае. Я с ним давно и много работаю по разным проектам. Мне выгодно, чтобы они совершенствовались ))

    Модератор Yui

    (@fierevere)

    ゆい

    RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
    а если вместо этого сделать так

    RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
    ?

    Вот этот вариант не проходит.

    <IfDefine SSL>
      SetEnv HTTPS "on"
      SetEnv HTTP_X_FORWARDED_PROTO "https"
    </IfDefine>
    <IfDefine !SSL>
      SetEnv HTTPS "off"
      SetEnv HTTP_X_FORWARDED_PROTO "http"
    </IfDefine>
    
    RewriteEngine On
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
    # 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

    Либо перекиды на главную страницу. Либо (если убрать из конфига $_SERVER[‘HTTPS’]=’on’;) — бесконечный цикл.

    Если заменить

    RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
    на
    RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
    то тоже не работает с теми же симптомами.

    Модератор Yui

    (@fierevere)

    ゆい

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

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

    оставьте это в конфиге пока что, и соответственно работайте с ТП хостинга чтобы исправлялись 🙂

Просмотр 15 ответов — с 1 по 15 (всего 18)
  • Тема «http и https вперемешку — откуда?» закрыта для новых ответов.