Re: [解決済み] 「カート」画面に遷移しても、共用SSL接続になりません

2011 年 2 月 9 日

ホーム フォーラム 使い方全般 [解決済み] 「カート」画面に遷移しても、共用SSL接続になりません Re: [解決済み] 「カート」画面に遷移しても、共用SSL接続になりません

#61419

nanbu
参加者

こんにちは。

remove_filter(‘template_redirect’, ‘redirect_canonical’);

は、function.php ではなく、テーマのfunctions.php で動作すると思います。

WordPress の改変はしない方が良いですね。

さて、canonical.php ですが、セキュリティー関係ではないので無くても動作に支障はありませんが、このファイルのコメントにもあります通りSEO に関係してくるようです。WordPress がSEO に有効と言われますが、ここもその一部だと思います。ショップを構築する上では外したくないところですね。

では何故そちらのサーバーでリダイレクトが発生するのかと言うところですが、環境変数の隠蔽が関係しているのではないかと推測しています。

日本のサーバーに良く見られるのですが、SSL を通したリクエストに対してポート番号などを隠しているようです。これは初心者向けのサーバーには有効かもしれませんが、上級者向けのサーバーとしてはお勧めできません。

ちゃんとしたショップを構築するのであれば、ちゃんとしたサーバーを選ぶ事が大切だと思います。

現在お使いのサーバーが環境変数を隠しているかどうかを確認する事ができます。以下のコードをfooter.php テンプレートのwp_footer() の下に追加してみてください。

<?php echo 'HTTPS : ' . print_r($_SERVER['HTTPS'], true); ?><br />
<?php echo 'PORT : ' . print_r($_SERVER['SERVER_PORT'], true); ?><br />
<?php echo 'POST : ' . (( isset($_POST) && count($_POST) ) ? 'OK' : ''); ?><br />

これにより、カートページの左下に次のように見えれば問題無しです。

HTTPS とPORT の両方が見えない状態ですとSSL をうまく制御できないと言う事になります。

HTTPS : on

PORT : 443

POST : OK

最後のPOST と言うのは念のために置きました。普通は’OK’となります。

canonical.php は$_POST が有った場合は処理を行なわないようになっています。

実はカートページには$_POST が存在するので本来canonical.php は何も処理しないはずですが、mizuya さんのご報告でcanonical.php のrequire を削除で動作したとありましたので確認のため置きました。

一度ご確認ください。