Ответы пользователя по тегу Цифровые сертификаты
  • Wordpress. Подключение защищено не полностью. Как решить?

    alone_lion1987
    @alone_lion1987
    Веб-разработчик
    У вас так происходит, потому что вывод ссылок в html идет по протоколу http:// (просмотрите исходный html-код и поиском пройдитесь по http://, все ссылки там у вас загружаются по http, а нужно по https), поэтому получается такая ситуация. Нужно чтобы система генерировала ссылки по https. Это касается всего, — ссылки для подключения css, js. Ссылки, в контенте, которые уже берутся из бд.

    В этом случае, в шаблоне вашего сайта, если прописаны абсолютные url, советую заменить http на https. Если используете по всюду функции вывода из бд, тогда надо менять в бд. Но лучше попробуйте такой код (если у вас сайт на wordpress). Еще есть встроенная функция, определяющая, какой протокол использует веб-сервер, для отдачи страниц, — is_ssl( ).

    В файл functions.php вставьте:

    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']) . ')~', 'https\1', $text);
        return $text;
    }

    Вроде это должно помочь.

    Еще можно запросами к бд попробовать, тогда и код выше не понадобится:

    UPDATE wp_options SET option_value = replace(option_value, 'http://site.ru', 'https://site.ru') WHERE option_name = 'home' OR option_name = 'siteurl';
    
    UPDATE wp_posts SET guid = replace(guid, 'http://site.ru', 'https://site.ru');
    
    UPDATE wp_posts SET post_content = replace(post_content, 'http://site.ru', 'https://site.ru');


    Тут site.ru — ваш домен подставляете. Все абсолютные пути в базе станут с https

    А везде, где ссылки выводятся не через бд, а напрямую хардкорно прописаны где либо http, замените на https://
    Ответ написан
    2 комментария