Que dois-je faire pour convertir mon MultiSite de HTTP en HTTPS?

8

J'ai été chargé de convertir environ 100 sites de mon instance multisite en HTTPS.

Je peux facilement écrire un script pour frapper la base de données et changer les valeurs siteurlet homeen HTTPS, ce qui devrait forcer le site à mettre en file d'attente les scripts et les futures images intégrées à HTTPS, non?

Eh bien, je devrai également parcourir tout le post_content pour tous les liens internes, ainsi que les images en utilisant HTTP et les convertir en HTTPS.

Je pourrais probablement fouetter quelque chose ensemble pour le faire, mais je me demande ce que je dois changer d'autre. GUID n'est-ce pas? Si j'utilisais les commandes $ wpdb, aurais-je besoin de resérialiser la base de données par la suite?

J'aurais dû demander d'abord, existe-t-il un plugin fiable qui s'en occupera pour moi? Que dois-je savoir d'autre sur ce processus?

Remarques - Nous avons déjà tous les certificats SSL, c'est donc quelque chose dont je n'ai pas à m'inquiéter. - Le serveur exécute linux (redhat) et apache - Le multisite utilise des sous-répertoires - Je ne sais pas grand-chose d'autre, le serveur est en dehors de ma juridiction

rugbert
la source
Votre multisite utilise-t-il des sous-répertoires ou sous-domaines? Quel serveur Web (Apache, nginx, etc.) utilisez-vous? Cela aura une incidence sur le type de certificat SSL que vous recherchez.
Pat J
Merci Pat, j'ai édité ma question avec les informations que vous avez demandées.
rugbert
Soyez prudent avec la recherche et le remplacement automatisés - si vous avez des données sérialisées dans la base de données, vous les casserez en changeant httpen httpssi vous ne changez pas la longueur de la chaîne aussi!
Steven
Salut @ rugbert, avez-vous pu résoudre cette question? Je vérifie simplement si ma réponse a été utile à votre question.
Ethan Jinks O'Sullivan

Réponses:

1

Vous pouvez exécuter un script pour METTRE À JOUR toutes les URL et les guides vers https, si vous voulez une configuration propre.

Mais envisagez également des alternatives telles que:

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

Dans wp-config.php pour le backend:

define('FORCE_SSL_ADMIN', true);

Dans wp-config.php pour le frontend (ou exécutez un script db UPDATE):

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

Ensuite, vous pouvez simplement exécuter un script pour METTRE À JOUR toutes les URL de contenu wp_posts.

Le J
la source
0

Ce processus implique en fait l'achat d'un certificat de sécurité et son application à votre serveur pour vos sites Web. Cela forcera à son tour tout le monde à se connecter via une connexion sécurisée via le certificat présenté par votre serveur. Ces certificats sont appelés certificats SSL: http://www.DigiCert.com/SSL-Certificates

John Lucey
la source
Merci John, j'ai oublié de mentionner que nous avons tous les certificats SSL.
rugbert
Ok dans ce cas, les certificats ont-ils été appliqués et tous vos sites ont-ils été correctement remis en vente dans les fichiers DNS? Je dois demander si vous hébergez sur place ou avec un tiers? Quel OS est l'environnement de serveur?
John Lucey
Nous utilisons un tiers pour héberger. Je n'ai pas trop d'informations ou d'accès au serveur, mais c'est un serveur linux redhat exécutant apache. Je suis plus concentré sur ce que je dois faire pour la DB
rugbert
1
Je ne crois pas qu'il faille faire quoi que ce soit à la base de données. SSL est côté serveur et non DB. Mon conseil serait de vous assurer que les certificats ont été appliqués au serveur et de vérifier en utilisant https dans votre URL pour tester la validité. Si le site apparaît, vous devriez pouvoir simplement taper l'ancienne URL sans https et cela vous amènera automatiquement en https. Cela fait un moment que j'ai déployé un certificat si malheureusement que je ne peux pas vous aider à travers ces étapes, mais vos ingénieurs devraient être en mesure de gérer cela pour vous ainsi que le fichier de redirection DNS sur le serveur pour corriger le côté serveur d'URL.
John Lucey
0

Une façon possible d'effectuer cette modification de données consiste à utiliser WP-CLI sur le terminal.

Tout d'abord, vous devez vous assurer d'avoir une sauvegarde et une stratégie de restauration solide en cas de problème. Vous devez également tester cette procédure sur un système local ou de test avec une copie de la base de données active.

Les étapes de base sont, pour itérer sur chaque site de votre réseau et remplacer les URL de chaque site à l'aide de la search-replacecommande WP-CLI .

Voici une doublure bash:

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

Examinons cela:

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

Celui-ci démarre une boucle pour chaque ligne de la sortie de la commande à l'intérieur $()et écrit chaque ligne dans la variable $SITE.

$(wp site list --field=url)

C'est la site listcommande WP-CLI qui vous donne une liste de toutes les URL de site dans votre réseau. Exécutez cette commande uniquement, vous verrez probablement quelque chose comme:

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

Maintenant

...); do

va juste démarrer la partie de la boucle intérieure.

La commande de boucle interne fait toute la magie (je la divise en deux lignes en utilisant \pour la lisibilité):

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

Nous disons WP-CLI de recherche pour $SITE(par exemple https://your-site.tld/) et le remplacer par une version légèrement modifiée: ${SITE/http:/https:}. Il s'agit d'une opération de remplacement de chaîne bash qui remplace http:par https:. (Donc, en résolvant les variables, la commande ressemblerait wp search-replace "http://your-site.tdl/" "https://your-site.tld/").

search-replacepossède de nombreuses options possibles décrites dans la documentation . Dans l'exemple, j'ai utilisé ceux-ci:

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

--dry-runet --verbosesont clairement utiles pour tester la commande.

--network applique également l'opération de recherche et de remplacement aux tableaux de réseau.

--preciseindique à WP-CLI d'utiliser PHP au lieu de SQL pour rechercher et remplacer les valeurs. Cela garantit que les valeurs sérialisées ne seront pas corrompues.

Enfin, la boucle est fermée avec

; done

Permettez-moi de le souligner à nouveau: testez-le profondément avant de commencer à l'utiliser en production. Vous devez comprendre comment cela fonctionne et ce que fait WP-CLI. J'ai utilisé WP-CLI avant d'effectuer de telles recherches et de remplacer des opérations pour migrer des multisites vers d'autres noms de domaine, mais pas pour passer de httpà https.

Il peut y avoir des cas limites: WP-CLI lit toujours le wp-config.phpet essaie de trouver un «réseau» correspondant dans la base de données en utilisant les constantes de wp-config.php. Si vous manipulez un site (la base de données) mais pas l'autre (les constantes wp-config.php), vous pourriez avoir des ennuis. Mais pour votre cas, je pense que ne sera pas un problème car WP repose généralement sur DOMAIN_CURRENT_SITEet PATH_CURRENT_SITEet ils ne changeront pas de toute façon. Mais encore une fois, testez cela en profondeur.

Avec un peu plus de magie bash, vous pouvez également diviser cette boucle en morceaux de 5 ou 10 sites et la parcourir étape par étape.

David
la source
pourquoi pas interconnectit.com/products/… ?
KnightHawk
Vous posez la question dans la mauvaise direction. La bonne serait: pourquoi utiliser ce plugin? Quels sont les avantages par rapport à l'approche CLI décrite?
David
0

Pour vous assurer que tous vos sites Web utilisent HTTPS dans votre post_content, vous pouvez effectuer l'une des deux options suivantes:

1. Backend: exécuter une requête SQL

Pour vous assurer que tous vos liens HTTP sont définis comme HTTPS, utilisez la requête SQL suivante:

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_URLsera remplacé par http://example.com(non HTTP)
  • NEW_URLsera remplacé par https://example.com(HTTPS)

Cela couvrira le siteurl, homeet tout votre contenu sur votre site Web vers le nouveau HTTPS.

2. Frontend: utilisez le plugin Search & Replace

Une approche plus conviviale consiste à utiliser le plugin Rechercher et remplacer pour remplacer facilement toutes les tables qui contiennent votre ancien HTTP et les changer en HTTPS. Le processus est facile à utiliser et vous pouvez prévisualiser les tables et les lignes qui seront affectées avant d'appliquer ces modifications.

Avertir

Avant d'appliquer des modifications, je pense qu'il va sans dire de toujours faire une sauvegarde de votre base de données en cas de problème.

Ethan Jinks O'Sullivan
la source
0

HTTP est un protocole par défaut, qui est utilisé par la plupart des sites Web pour gérer les informations sur le Web. Votre site Web fonctionne sur HTTPS sans aucun message d'erreur, cela signifie que votre certificat a été installé correctement. Vous devez migrer l'intégralité de votre site Web de HTTP vers HTTPS.

Apprenez à déplacer HTTP vers HTTPS pour WordPress

Harshita
la source