web-dev-qa-db-fra.com

Supprimez HTTP: de l'URL du site et conservez simplement //

Je construis un site Web pour mon entreprise qui se charge via HTTP à l'intérieur de l'entreprise et via HTTPS en dehors du réseau de l'entreprise. C'est une contrainte et il n'y a aucun moyen de l'éviter. Le site doit fonctionner à la fois sur HTTP et HTTPS.

Ce mélange HTTP et HTTPS nous pose un énorme problème. J'ai essayé d'utiliser des plugins qui rendent les URL relatives. Cependant, certaines URL restent absolues et le panneau d'administration ne s'ouvre pas correctement via HTTPS.

Existe-t-il un hack permettant de supprimer HTTP de l'URL du site et de ne placer que deux barres obliques (//)? Cela résoudra notre problème, du moins pour le front-end.

Merci d'avance. Votre aide est appréciée.

1
Animish Andraskar

Pour supprimer http: et https: de tous les liens, utilisez le script suivant:

add_action( 'plugins_loaded', 'wpse_232287_init' );

function wpse_232287_init() { // Initiate the function
    ob_start( 'wpse_232287_remove_http' );
}

function wpse_232287_remove_http( $buffer ) {
    // Check for a Content-Type header, only apply rewriting to "text/html" or undefined
    $headers = headers_list();
    $content_type = null;

    foreach ( $headers as $header ) {
        if (strpos( strtolower( $header ), 'content-type:' ) === 0 ) {
            $pieces = explode( ':', strtolower( $header ) );
            $content_type = trim( $pieces[1] );
            break;
        }
    }

    if ( is_null( $content_type ) || substr( $content_type, 0, 9 ) === 'text/html' ) { // Replace 'href'/'src' attributes within script/link/base/img tags with '//'
        $return = preg_replace( "/(<(script|link|base|img|form)([^>]*)(href|src|action)=[\"'])https?:\\/\\//i", "$1//", $buffer );
        if ( $return ) { // On regex error, skip overwriting content
            $buffer = $return;
        }
    }
    return $buffer;
}
0