web-dev-qa-db-fra.com

bloginfo () et get_template_directory_uri () avec SSL?

J'ai un thème Wordpress que j'essaie de mettre sur un site Web exclusivement SSL. Il n’existe pas de version non SSL du site.

Le thème Wordpress utilise diverses fonctions telles que bloginfo('pingback_url'), bloginfo('template_directory'), get_template_directory_uri(), etc ... Toutes les fonctions typiques d’un thème.

Toutes ces fonctions génèrent des liens http et non pas https; aucun d'entre eux ne se charge donc, car une version non SSL du site n'existe pas.

Comment puis-je forcer Wordpress à utiliser https pour TOUT?

4
Jake Wilson

essayez d'installer ce plugin WordPress. http://wordpress.org/extend/plugins/wordpress-https/installation/ mais lisez bien les instructions d’installation car il y a encore beaucoup à faire après l’activation du plugin.

3
WP Themes

Si votre site Web utilise un service d'équilibrage de charge qui gère SSL, il est possible que votre serveur n'obtienne rien dans la variable serveur $_SERVER['HTTPS'] et que $_SERVER['SERVER_PORT'] soit égal à 80 alors qu'il devrait correspondre à 443 (voir ceci Réponse de débordement de pile pour plus de détails ).

Si tel est le cas et que vous ne pouvez pas demander à votre hôte de changer cela, vous devrez peut-être le falsifier et dire à PHP qu'il s'agit de toute façon de SSL. Définissez les URL de votre maison et de votre site sur https afin que toutes les URL générées par WordPress soient des URL https. Puis déposez ce code dans un plugin ( en voici un tout prêt , déposez-le dans votre dossier plugins et activez-le):

// if site is set to run on SSL, then force-enable SSL detection!
if (stripos(get_option('siteurl'), 'https://') === 0) {
    $_SERVER['HTTPS'] = 'on';
}

NB: cela peut se retourner contre vous, car vous avez probablement un code (dans les plugins ou votre propre code) qui vérifie si la page a été chargée via SSL et redirige les autres. Votre serveur ne pourra pas tester cela maintenant! En tant que tel, vous devez également ajouter du code JavaScript à votre page afin de vous assurer que vos pages sécurisées seront chargées via SSL (ceci est également effectué par le plug-in prêt à l'emploi):

<script>
if (document.location.protocol != "https:") {
    document.location = document.URL.replace(/^http:/i, "https:");
}
</script>

NB: ce n'est pas infaillible! Cependant, il devrait intercepter la plupart des situations, à l'exception de quelqu'un qui désactive JavaScript, puis modifie l'URL pour le forcer à revenir à http. S'ils le font, ils méritent peut-être de vendre leurs identifiants de carte de crédit à Elbonia.

2
webaware