web-dev-qa-db-ja.com

サイトのURLからHTTP:を削除し、//をそのまま残します。

私は自分の会社のWebサイトを構築しています。このWebサイトは、社内のHTTPと社内のネットワークのHTTPSを介して読み込まれます。これは強制であり、私たちがそれを避けることができる方法はありません。サイトはHTTPとHTTPSの両方で機能する必要があります。

このHTTPとHTTPSの混在は私たちに大きな問題を与えています。 URLを相対にするプラグインを使用してみました。しかし、いくつかのURLはまだ絶対パスであり、管理パネルはHTTPS経由では正しく開きません。

サイトURLからHTTPを削除してスラッシュ(//)を2つだけ使用できるようにするためのハッキングはありますか?少なくともフロントエンドでは、これで問題が解決します。

前もって感謝します。どうぞよろしくお願いします。

1

すべてのリンクからhttp:https:を削除するには、次のスクリプトを使用します。

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