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


8

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

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

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

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

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

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


Ваш мультисайт использует подкаталоги или субдомены? Какой веб-сервер (Apache, nginx и т. Д.) Вы используете? Это будет иметь какое-то отношение к виду SSL-сертификата, для которого вы покупаете.
Пэт Дж

Спасибо, Пэт, я отредактировал свой вопрос, используя информацию, которую ты спросил.
Регберт

Будьте осторожны с автоматическим поиском и заменой - если у вас есть сериализованные данные в базе данных, вы сломаете их, изменив httpна, httpsесли вы тоже не измените длину строки!
Стивен

Привет @ rugbert, ты смог решить этот вопрос? Просто проверяю, был ли мой ответ полезным для вашего вопроса.
Итан Джинкс О'Салливан

Ответы:


1

Вы можете запустить скрипт, чтобы ОБНОВИТЬ все 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');

Тогда вы можете просто запустить скрипт, чтобы ОБНОВИТЬ все URL-адреса содержимого wp_posts.


0

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


Спасибо Джон, я забыл упомянуть, что у нас есть все сертификаты SSL.
Регберт

Хорошо, в этом случае сертификаты были применены, и все ваши сайты правильно включены в файлы DNS? Я должен спросить у вас хостинг на месте или с третьей стороной? Какая ОС является серверной средой?
Джон Люси

Мы используем третье лицо для размещения. У меня нет слишком много информации или доступа к серверу, но это сервер Redhat Linux, работающий под Apache. Я больше размышляю о том, что мне нужно, чтобы DB
rugbert

1
Я не верю, что что-то должно быть сделано с базой данных. SSL на стороне сервера, а не БД. Я бы посоветовал убедиться, что сертификаты были применены к серверу, и проверить, используя https в вашем URL для проверки правильности. Если сайт появится, вы сможете просто ввести старый URL без https, и он автоматически приведет вас к https. Прошло некоторое время с тех пор, как я так печально развернул сертификат, что не могу помочь вам выполнить эти шаги, но ваши инженеры должны быть в состоянии справиться с этим для вас, а также с файлом перенаправления DNS на сервере для исправления URL-адреса на стороне сервера.
Джон Люси

0

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

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

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

Вот один вкладыш bash:

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)

Это WP-CLI site listкоманда , которая дает вам список всех 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:}. Эта строка заменяет операцию, которая заменяется http:на https:. (Таким образом, разрешая переменные, команда будет выглядеть так wp search-replace "http://your-site.tdl/" "https://your-site.tld/").

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

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

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

--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 сайтов и проходить его шаг за шагом.



Вы задаете вопрос в неправильном направлении. Правильнее было бы: зачем использовать этот плагин? Каковы преимущества по сравнению с описанным подходом CLI?
Дэвид

0

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

1. Backend: выполнить запрос 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. Интерфейс: используйте плагин Search & Replace

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

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

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


0

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.