wake-up-neo.net

Entfernen Sie HTTP: von der Site-URL und behalten Sie einfach // darin

Ich erstelle eine Website für mein Unternehmen, die über HTTP innerhalb des Unternehmens und über HTTPS außerhalb des Unternehmensnetzwerks geladen wird. Dies ist ein Zwang und wir können ihn auf keinen Fall vermeiden. Die Site muss über HTTP und HTTPS funktionieren.

Dieses gemischte HTTP & HTTPS stellt uns vor ein großes Problem. Ich habe versucht, Plugins zu verwenden, die die URLs relativieren. Einige URLs sind jedoch weiterhin absolut und das Admin-Panel wird über HTTPS nicht ordnungsgemäß geöffnet.

Gibt es einen Hack, mit dem wir HTTP aus der Site-URL entfernen können und nur zwei Schrägstriche (//) enthalten? Dies wird unser Problem zumindest für das Frontend lösen.

Danke im Voraus. Deine Hilfe wird wertgeschätzt.

1

Verwenden Sie das folgende Skript, um http: und https: von allen Links zu entfernen:

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;
}