web-dev-qa-db-fra.com

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

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

Je peux facilement écrire un script pour accéder à la base de données et modifier les valeurs siteurl et home en HTTPS, qui doit obliger le site à mettre en file d'attente les scripts et les images incorporées futures au format HTTPS, non?

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

Je pourrais probablement concocter quelque chose pour le faire, mais je me demande quoi d'autre je dois changer. GUID non? 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, y a-t-il un plugin fiable qui s'en chargera pour moi? Que dois-je savoir de plus sur ce processus?

Notes - Nous avons déjà tous les certificats SSL, donc je ne dois pas m'inquiéter de quelque chose. - Le serveur est sous 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

8
rugbert

Vous pouvez exécuter un script pour mettre à jour toutes les URL et tous les guides vers https, si vous souhaitez une nouvelle installation.

Mais considérez é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 client (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.

1
The J

Une façon possible de procéder à cette modification des données consiste à utiliser WP-CLI sur le terminal.

Tout d’abord, vous devez vous assurer de disposer d’une stratégie de sauvegarde et d’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 consistent à parcourir chaque site de votre réseau et à remplacer les URL de chaque site à l'aide de la commande search-replace de WP-CLI.

Voici un one-liner 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 commence une boucle pour chaque ligne de la sortie de la commande dans $() et écrit chaque ligne dans la variable $SITE.

$(wp site list --field=url)

C'est la WP-CLI site list commande qui vous donne la liste de toutes les URL de sites de 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/
...

À présent

...); do

va juste commencer la partie boucle intérieure.

La commande de boucle interne fait toute la magie (je l'ai divisée en deux lignes en utilisant \ pour la lisibilité):

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

Nous indiquons à WP-CLI search de $SITE (par exemple https://your-site.tld/) et replace avec une version légèrement modifiée: ${SITE/http:/https:}. Ceci est une chaîne bash qui remplace l'opération qui remplace http: par https:. (En résolvant les variables, la commande ressemblerait à wp search-replace "http://your-site.tdl/" "https://your-site.tld/").

search-replace a de nombreuses options possibles décrites dans la documentation . Dans l'exemple que j'ai utilisé ceux-ci:

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

--dry-run et --verbose sont clairement utiles pour tester la commande.

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

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

Enfin la boucle est fermée avec

; done

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

Il peut y avoir des cas Edge: WP-CLI lit toujours le wp-config.php et essaie de trouver un "réseau" correspondant dans la base de données en utilisant les constantes dans wp-config.php. Si vous manipulez un site (la base de données) mais pas l’autre (les constantes dans wp-config.php), vous pourriez avoir des problèmes. Mais dans votre cas, je pense que ce ne sera pas un problème, car WP s'appuie généralement sur DOMAIN_CURRENT_SITE et PATH_CURRENT_SITE et ils ne changeront pas de toute façon. Mais encore une fois, testez cette approfondie.

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

0
David

Ce processus implique en réalité l'achat d'un certificat de sécurité et son application sur votre serveur pour vos sites Web. Cela forcera à son tour toutes les personnes qui se connecteront à 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

0
John Lucey

Pour vous assurer que tous vos sites Web utilisent HTTPS dans votre post_content, vous pouvez utiliser 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 en tant que 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_URL sera remplacé par http://example.com (non HTTP)
  • NEW_URL sera remplacé par https://example.com (HTTPS)

Cela couvrira les siteurl, home et tout le contenu de votre site Web vers le nouveau protocole HTTPS.

2. Frontend: utilisez le Search & Replace plugin

Une approche plus conviviale consiste à utiliser le plugin Search & Replace pour remplacer facilement toutes les tables contenant votre ancien HTTP et les remplacer par un protocole 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.

Avertissement

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

0

HTTP est un protocole par défaut, 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 à HTTPS.

Apprenez à déplacer HTTP vers HTTPS pour WordPress

0
Harshita