[WordPress] Mixed Content et détection – port 80 au lieu de 443
Coucou à tous,
Comme vous avez pu le constater (ou pas) Dyrk est désormais en https ... bon il y a eu quelques surprises, mais elles sont à 99% réglées !
Vu que nous sommes samedi, je vais prendre le temps de rentrer doucement dans le cœur du sujet.
Apache
Comme vous le savez Apache pour fonctionner avec PHP doit avoir un module d'activer.
Ce qui vous permet, lorsque vous vous connectez sur un serveur d'ouvrir des pages / scripts PHP qui seront interprétés.
Ex : /etc/apache2/mods-enabled/php5.conf
PHP
PHP reçoit des informations lorsqu'il est chargé par le biais d'Apache.
Notamment le port sur lequel se connecte l'utilisateur.
$_SERVER['SERVER_PORT']
WORDPRESS
WordPress, charge les scripts, feuilles de style de votre thème et de vos plugins via la fonction wp_head() !
Cette fonction appelle 2 autres fonctions wp_enqueue_script() & wp_enqueue_style()
Fonction qui vont se charger de récupérer les liens vers les fichiers ...
Ces liens sont reconstruits via les informations de votre WordPress
siteurl/cheminversleplugin
C'est le siteurl qui va nous intéresser !
WordPress gère automatiquement le préfixe des urls "http://" ou "https://"
Comment ?
Par quelle magie
!!! NOIRE !!!
Il va juste contrôler la fameuse variable $_SERVER['SERVER_PORT']
- 80 : http
- 443 : https
Selon la manière dont va être configuré votre Apache, il se peut que cette variable vous retourne 80 au lieu de 443 et inversement, même si ça n'est pas le cas ...
Du coup, si vous vous connectez sur votre WordPress en https ... que wordpress inclu des scripts & des css en http ...
Votre navigateur les bloquera par sécurité !!!
Pour ce que l'on appelle du Mixed Content (contenu mixe ...)
En https ... il faut que tous les liens que vous incluez (script, css, ...), soient en https ... sinon ils ne seront pas chargés ...
Bref ... pour forcer WordPress, à vous mettre vos liens en https, il suffit juste de renseigner dans l'entête du script wp-config.php (situé à la racine de votre WordPress)
ceci :
$_SERVER['SERVER_PORT'] = 443;
Hop, ça fonctionnera comme sur des roulettes !!!
Pour ce qui est des images, et autres liens dans vos postes, je vous invite à le migrer vers du https via cet outil en remplaçant http://votresite par https://votresite
Bonne Journée à vous ^^