Intereting Posts
Как использовать командные строки, активировать тему в wp-cli, также настроить тему Vagrant / Sage? Могли бы автоматически обновлять файлы ядра WordPress и вызывать белый экран смерти? Запросить разрешение пользователя при активации плагина Как удалить текст над заголовком? Пользовательский тип сообщения «Показать на экране» не относится к числу WordPress для заполнения поля ввода пароля значением Получить URL-адрес избранного изображения После wp_insert_post () Есть ли тема WordPress для Self Storagae, как Spacer стиль привязан к тегу <html> из-за пределов таблиц стилей Как сделать недавно зарегистрированный сайт в многопользовательской сети «вживую» только тогда, когда пользователь готов Справочник по функциям / человеческое время для будущих должностей Условное выделение URL-адреса родительской страницы Функция кеширования get_option? Как отображать панель администратора при использовании WP_USE_THEMES = false? Отфильтровать результаты из сериализованной строки для использования в статистике

Что мне нужно сделать, чтобы преобразовать мой MultiSite из HTTP в HTTPS?

Мне было поручено преобразовать около 100 сайтов в мой мультисайтовый экземпляр в HTTPS.

Я могу легко написать сценарий, чтобы попасть в БД и изменить значения siteurl и home на HTTPS, который должен заставить сайт вставлять скрипты и будущие встраиваемые изображения в HTTPS правильно?

Ну, мне также нужно пройти через все post_content для любых внутренних ссылок, а также изображения с использованием HTTP и преобразовать их в HTTPS.

Я мог бы, возможно, что-то взбить, чтобы сделать это, но мне интересно, что еще мне нужно изменить. GUIDs правильно? Если бы я использовал команды $ wpdb, мне понадобилось бы повторно инициализировать БД?

Сначала я должен был спросить, есть ли надежный плагин, который позаботится об этом для меня? Что еще мне нужно знать об этом процессе?

Примечания. У нас уже есть все SSL-сертификаты, поэтому мне нечего беспокоиться. – Сервер работает под управлением Linux (redhat) и apache. В многопользовательском режиме используются подкаталоги – я не знаю многого другого, сервер находится вне моей юрисдикции

Solutions Collecting From Web of "Что мне нужно сделать, чтобы преобразовать мой MultiSite из HTTP в HTTPS?"

Вы можете запустить скрипт для ОБНОВЛЕНИЯ всех URL-адресов и указаний на https, если вы хотите установить чистую настройку.

Но также рассмотрите альтернативы, такие как:

 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.yoursite.com/$1 [R,L] </IfModule> 

В wp-config.php для бэкэнд:

 define('FORCE_SSL_ADMIN', true); 

В wp-config.php для внешнего интерфейса (или запустить db-скрипт UPDATE):

 define('WP_HOME','https://example.com'); define('WP_SITEURL','https://example.com'); 

Затем вы можете просто запустить скрипт для UPDATE всех URL-адресов для содержимого wp_posts.

Этот процесс фактически предполагает покупку сертификата безопасности и применение его к вашему серверу для ваших веб-сайтов. Это, в свою очередь, заставляет всех посещать безопасное соединение через сертификат, представленный вашим сервером. Эти сертификаты называются сертификатами SSL: http://www.DigiCert.com/SSL-Certificates

Одним из возможных способов сделать эту модификацию данных является использование WP-CLI на терминале.

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

Основными шагами являются: итерация по каждому сайту вашей сети и замена URL-адресов каждого сайта с помощью команды search-replace WP-CLI.

Вот один однострочный баш:

 for SITE in $(wp site list --field=url); do wp search-replace "{$SITE}" "${SITE/http:/https:}" --dry-run --precise --network --verbose; done 

Давайте рассмотрим это:

 for SITE in $(wp site list --field=url); 

Это запускает цикл для каждой строки вывода команды внутри $() и записывает каждую строку в переменной $SITE .

 $(wp site list --field=url) 

Это команда site list узлов WP-CLI, которая дает вам список всех URL-адресов сайтов в вашей сети. Выполните эту команду исключительно, вы, вероятно, увидите что-то вроде:

 http://your-site.tld/ http://your-site.tld/site2/ http://another-of.your-site.tld/ ... 

Теперь

 ...); do 

просто запустит часть внутреннего цикла.

Команда внутреннего цикла выполняет всю магию (я разделил ее на две строки, используя \ для чтения):

 wp search-replace "$SITE" "${SITE/http:/https:}" \ --dry-run --precise --network --verbose 

Мы говорим WP-CLI о поиске $SITE (например, https://your-site.tld/ ) и заменяем его слегка измененной версией: ${SITE/http:/https:} . Это строка bash заменяет операцию, которая заменяет http: https: (Таким образом, разрешая переменные, команда будет выглядеть как wp search-replace "http://your-site.tdl/" "https://your-site.tld/" ).

search-replace имеет много возможных опций, описанных в документации . В этом примере я использовал:

 --dry-run --precise --network --verbose 

--dry-run и --verbose , безусловно, полезны для тестирования команды.

--network применяет --network поиска и замены также к сетевым таблицам.

--precise сообщает WP-CLI использовать PHP вместо SQL для поиска и замены значений. Это гарантирует, что сериализованные значения не будут повреждены.

Наконец, замкнутый цикл

 ; done 

Позвольте мне еще раз подчеркнуть это: испытайте это глубоко, прежде чем начинать использовать это на производстве. Вы должны понимать, как это работает и что делает WP-CLI. Раньше я использовал WP-CLI для выполнения таких операций поиска и замены, чтобы перенести мультисайты на другие имена доменов, но не переключать с http на https .

Там могут быть некоторые случаи: WP-CLI все еще читает wp-config.php и пытается найти соответствующую «сеть» в базе данных, используя константы в wp-config.php . Если вы манипулируете одним сайтом (базой данных), а не другим (константы в wp-config.php ), у вас могут возникнуть проблемы. Но для вашего случая я думаю, что это не будет проблемой, поскольку WP обычно полагается на DOMAIN_CURRENT_SITE и PATH_CURRENT_SITE и они все равно не изменятся. Но опять же, испытайте это тщательно.

С немного большей магией bash вы также можете разбить этот цикл на куски 5 или 10 сайтов и пройти его шаг за шагом.

Чтобы все ваши сайты использовали HTTPS в вашем post_content , вы можете выполнить один из двух вариантов:

1. Бэкэнд: выполнить запрос SQL

Чтобы убедиться, что все ваши HTTP-ссылки заданы как HTTPS, используйте следующий SQL-запрос:

 UPDATE wp_options SET option_value = replace(option_value, 'OLD_URL', 'NEW_URL') WHERE option_name = 'home' OR option_name = 'siteurl'; UPDATE wp_posts SET guid = replace(guid, 'OLD_URL','NEW_URL'); UPDATE wp_posts SET post_content = replace(post_content, 'OLD_URL', 'NEW_URL'); UPDATE wp_postmeta SET meta_value = replace(meta_value,'OLD_URL','NEW_URL'); 
  • OLD_URL будет заменен на http://example.com (не-HTTP)
  • NEW_URL будет заменен на https://example.com (HTTPS)

Это будет охватывать siteurl , home и весь ваш контент на вашем веб-сайте для нового HTTPS.

2. Frontend: используйте плагин Search & Replace

Более удобный для пользователя подход – использовать плагин Search & Replace, чтобы легко заменить все таблицы, содержащие старый HTTP, и изменить их на HTTPS. Этот процесс прост в использовании, и вы можете просмотреть, какие таблицы и строки будут затронуты, прежде чем применять эти изменения.

предостережение

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

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

Узнайте, как переместить HTTP в HTTPS для WordPress