Отключение HTTPS и использование HTTP в WordPress
Сегодня я синхронизировал базу данных сайта разработки с базой данных продакшн-сайта.
Теперь мой сайт разработки выдает ошибку "404 Not Found". URL начинается с HTTPS, и через текст HTTPS идет красная черта. Страница 404 говорит "The server can not find the requested page: dev.greenbee-web.com/ilaimh/wp-admin/ (port 443). Apache Server at dev.greenbee-web.com Port 443".
Я не знал, что продакшн-сайт использует HTTPS (я являюсь сотрудником, и я не единственный, кто работает над этим сайтом). Это заставило сайт разработки использовать HTTPS, но я хочу, чтобы он использовал HTTP. Я не могу найти, где в конфигурационных файлах WordPress я могу вернуть сайт разработки к использованию HTTP.
Есть ли какая-то настройка в wp-config, которая заставляет мой сайт разработки использовать HTTPS? Если не в wp-config, где находится настройка, которая заставляет сайт использовать HTTPS?
Спасибо

Необходимо выполнить 2 действия.
Если вы используете сервер Apache, перейдите в файл .htaccess и измените настройки Rewrite и RewriteBase на:
RewriteEngine On
RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
Если вы используете Nginx, добавьте подобную конфигурацию:
server {
listen 80 443;
server_name example.com;
# настройки ssl
return 301 https://example.com$request_uri;
}
Это перенаправит трафик с https на http.
Затем через phpmyadmin или другой инструмент зайдите в базу данных, найдите таблицу wp_options и измените значения siteurl и home с https://example.com на http://example.com.
Очистите кеш и проверьте снова. Сайт должен работать без проблем. Если сайт продолжает запрашивать SSL, проверьте файл wp-config.php на наличие строки:
define('FORCE_SSL_ADMIN', true);
и измените значение 'true' на 'false'.
Надеюсь, это поможет решить проблему.

В моем случае помог ваш последний совет — закомментировать эти строки:
//define( 'FORCE_SSL_LOGIN', 1 );
//define( 'FORCE_SSL_ADMIN', 1 );

Здесь есть несколько факторов.
Во-первых, вам стоит проверить настройки сайта в таблице wp_options (или wp_X_options если у вас мультисайт), особенно значения:
- home
- siteurl
Другие таблицы, которые стоит проверить:
- wp_blogs
- wp_domain_mapping
- wp_options
- wp_site
- wp_sitemeta
Я не знаю, какую систему вы используете для синхронизации dev базы с prod, но у нас есть SQL скрипт, который мы запускаем после клонирования части prod базы данных.
UPDATE wp_dev.wp_blogs SET domain = REPLACE(domain, "https://produrl.com", "http://devurl.com");
UPDATE wp_dev.wp_domain_mapping SET domain = REPLACE(domain, "https://produrl.com", "http://devurl.com");
UPDATE wp_dev.wp_options SET option_value = REPLACE(option_value, "https://produrl.com", "http://devurl.com");
UPDATE wp_dev.wp_site SET domain = REPLACE(domain, "https://produrl.com", "http://devurl.com");
UPDATE wp_dev.wp_sitemeta SET meta_value = REPLACE(meta_value, "https://produrl.com", "http://devurl.com");
Замените wp_dev
на название вашей локальной базы данных, а produrl.com
и devurl.com
на соответствующие URL. Обратите внимание, что этот скрипт меняет внутренние URL с HTTPS на HTTP.
Наконец, вам может понадобиться изменить локальный конфиг WordPress и обновить эти две настройки:
define('FORCE_SSL_LOGIN', false);
define('FORCE_SSL_ADMIN', false);

Спасибо, Лоик.
Я использую BackupBuddy для копирования моих активных сайтов и восстановления на WAMP. Один из сайтов постоянно пытался использовать HTTPS. Я пытался установить сертификат на локальном WAMP, но безрезультатно.
Я проверил директорию локально восстановленного сайта и удалил папку simple ssl.
Бум. Теперь всё работает и остается на HTTP.
Чёрт, это было слишком просто. Ещё раз спасибо.

Если балансировщик нагрузки завершает SSL (https), тогда WordPress будет получать HTTP-трафик и перенаправлять на HTTPS, несмотря на то, что трафик к балансировщику идет по HTTPS, что приводит к бесконечным перенаправлениям.
Чтобы решить эту проблему, я добавляю в свой wp-config.php:
$_SERVER['HTTPS'] = 'on';
Или немного более сложный вариант (для кастомных установок):
if (getenv('use_ssl')) {
$_SERVER['HTTPS'] = 'on';
}

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

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

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

Вопрос был о том, как остановить принудительное использование SSL в WP. Я столкнулся с этой проблемой при работе с локальными сайтами на своем ноутбуке.

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