web-dev-qa-db-fra.com

Utiliser https pour img src

Mon site nécessite l'utilisation de https pour tous les fichiers HTML img src.

Voici la fonction WordPress que j'utilise pour afficher des images:

<img src="'.get_bloginfo("template_url").'/images/thumb-default.gif" />

Cela génère un http img src - comment puis-je convertir cela en https?

5
Ryan

WordPress vérifie la valeur de retour de is_ssl() avant de créer des URL à l'aide de get_bloginfo(). Si la fonction renvoie true, elle crée des URL https. S'il renvoie false, il crée des URL http.

De la source WordPress ...

function is_ssl() {
    if ( isset($_SERVER['HTTPS']) ) {
        if ( 'on' == strtolower($_SERVER['HTTPS']) )
            return true;
        if ( '1' == $_SERVER['HTTPS'] )
            return true;
    } elseif ( isset($_SERVER['SERVER_PORT']) && ( '443' == $_SERVER['SERVER_PORT'] ) ) {
        return true;
    }
    return false;
}

Donc ... si la demande a été faite via https ou si elle est arrivée sur le port 443, alors get_bloginfo() renverra une URL https://. En réalité, si vous forcez de toute façon à forcer https, vous devez forcer toutes les demandes sur le port 80 (http) sur le port 443 (https) ... mais c'est un problème de configuration du serveur, pas un problème de WordPress.

Vous pouvez également vous connecter à un filtre et remplacer http par https ...

Il suffit d'utiliser:

function replace_http( $original ) {
    // use preg_replace() to replace http:// with https://
    $output = preg_replace( "^http:", "https:", $original );
    return $output;
}

add_filter( 'template_url', 'replace_http' );
8
EAMann

Utiliser la fonction home_url () détectera automatiquement le code SSL et modifiera les protocoles.

0
Sam Margulies

Pour ajouter au correctif proposé par EAMann, j'ai apporté quelques modifications à la version 3.5:

add_filter( 'template_directory_uri', function( $original ) {
    $output = preg_replace( "/^http:/i", "https:", $original );
    return $output;
});

J'aimerais noter que cette redirection peut être très utile, mais mon serveur redirige SSL vers un autre port et n'est pas détecté par WP, donc pour moi, c'est un ennui.

0
René Olivo

Aviez-vous coché cette case lorsque vous avez demandé une page via le lien http ou https? Qu'est-ce que is_ssl() vous renvoie?

Je n'ai pas de pile compatible SSL à tester pour le moment, mais je suis à peu près sûr que les fonctions WP qui mettent en place des liens doivent prendre en compte SSL et afficher une version correcte.

0
Rarst