web-dev-qa-db-ja.com

1つのインストールからHTTPとHTTPSを提供する

HTTPとHTTPSの両方でコンテンツを配信しているWordPressをインストールしました。サイトのURLは「http://www.example.com」として設定されています。これはほとんどの状況で機能します - ある人が "https://www.example.com/page"でページを要求した場合、そのページはHTTPS経由で配信されます。

しかし、私が直面している課題は、サイトのURLを取得する多くのWordPressテンプレート関数(get_bloginfo( 'stylesheet')など)があることです。結果。同様に、WYSIWYGエディタに挿入された画像には、「http://www.example.com ...」というパスがハードコードされています。

私が本当にやりたいことは、ベースサイトのURLを "//www.example.com"として定義する方法を見つけることです。しかし、WordPress管理者フィールドはこれをサポートしません。

誰かがこれを行う方法について何かアイデアがありますか?

4
Eric Oliver

簡単な解決策は、.htaccessルールを使うことです。

#Redirect HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
2
Jarmerson

HTTPSを強制したくない(またはHTTPS以外の要求をすべてリダイレクトしたくない)場合は、投稿内のURLを次のように処理します。

function content_ssl($content) {
  if (isset($_SERVER["HTTPS"]))
    $content = ereg_replace("http://" . $_SERVER["SERVER_NAME"], "https://" . $_SERVER["SERVER_NAME"], $content);
  return $content;
}
add_filter('the_content', 'content_ssl');

WordPress自体がプロトコルマッチングを処理します。しかしいくつかのプラグインはそうではありません。

1
BillK