web-dev-qa-db-ja.com

bloginfo()とget_template_directory_uri()でSSL?

SSL専用Webサイトに掲載しようとしているWordpressテーマがあります。 SSL版以外のサイトはありません。

Wordpressテーマはbloginfo('pingback_url')bloginfo('template_directory')get_template_directory_uri()などのようなさまざまな機能を使用します。テーマのためのすべての典型的な機能。

これらの関数はすべてhttpではなくhttpsリンクを生成します。したがって、サイトの非SSLバージョンが存在しないため、それらのどれもロードしません。

どのようにしてWordpressにすべての目的でhttpsを使用させるのですか?

4
Jake Wilson

このWordPressプラグインをインストールしてみてください。 http://wordpress.org/extend/plugins/wordpress-https/installation/ しかし、プラグインを有効にした後に行うべき追加のことがあるので、インストール手順を読んでください。

3
WP Themes

WebサイトがSSLを処理するロードバランシングサービス上にある場合、サーバーはサーバー変数$_SERVER['HTTPS']で何も取得していない可能性があり、$_SERVER['SERVER_PORT']は443である必要があるときに80になる可能性があります(これを参照- Stack Overflow answer 詳細については)。

これが事実であり、ホストにそれを変更させることができない場合、それをかじってPHPにそれがSSLであることを伝える必要があるかもしれません。 WordPressによって生成されるすべてのURLがhttps URLとして出力されるように、httpsを使用するようにホームおよびサイトのURLを設定します。次に、このコードをプラグインにドロップします( 既製のもの 、プラグインフォルダーにドロップしてアクティブにします):

// if site is set to run on SSL, then force-enable SSL detection!
if (stripos(get_option('siteurl'), 'https://') === 0) {
    $_SERVER['HTTPS'] = 'on';
}

NB:ページがSSL経由で読み込まれたかどうかを確認し、読み込まれていない場合はリダイレクトするコードを(プラグインまたは独自のコードで)持っている可能性があるため、これは裏目に出る可能性があります。サーバーは今これをテストできません!したがって、ページにJavaScriptを追加して、安全なページがSSL経由でロードされることをある程度保証する必要があります(これも既製のプラグインによって行われます)。

<script>
if (document.location.protocol != "https:") {
    document.location = document.URL.replace(/^http:/i, "https:");
}
</script>

NB:これは絶対確実ではありません!ただし、ほとんどの状況をキャッチする必要があります。例外は、JavaScriptを無効にしてからURLを編集して強制的にhttpに戻す人です。もしそうするなら、彼らはクレジットカードの資格情報をエルボニアに売るに値するでしょう。

2
webaware