質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.50%

  • WordPress

    8935questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • AWS(Amazon Web Services)

    2534questions

    Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

  • Amazon Route 53

    22questions

    Amazon Route 53 はAmazonが提供する、 可用性と拡張性に優れた ドメインネームシステム(DNS)サービスです。

  • Amazon CloudFront

    13questions

    Amazon CloudFrontは、AWSの高速且つ高パフォーマンスなコンテンツ配信(CDN) サービス。容量の大きいコンテンツをキャッシュさせてWebサーバの負荷を軽減し、サーバダウンの防止など安定した配信が可能になります。

複雑な構築をした【Wordpress】の「セッション切れ」や「投稿できない」問題。

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 189

mushi_fao

score 3

構築内容

イメージ説明

今回の問題

「www.sample.com」よりログインしたwordpressでは一部の機能が制限されてしまいます。
具体的にはWordpressのサイトカラーを選んだり、ロゴ画像をアップロードしたりする『カスタマイズ画面』へ行こうとすると、「セッションの期限が切れました。」の無限ループが発生します。
記事の投稿については、ただただ更新ができず、下書き、プレビュー等もできません。

画像投稿をした

「wp.sample.com」よりログインをして、ロゴ画像を投稿しました。
もちろん、この図の通りhttpでの接続になってしまっているので、みかけ上は「https://wp.sample.com」ですが、SSLはなっておりません。
そして「このサイトへの接続は完全には保護されていません」と表示が出てしまいます。

画像のURLが2つある。

投稿した画像にはURLが紐付きますが、画像に対するURLが2つ出来上がっています。
「wp.sample.com」からログインして確認すると、画像に対応するURLは「https://wp.sample.com/img/xxxx.png」となっており、
「www.sample.com」からログインして確認すると、「https://www.sample.com/img/xxxx.png」となっております。

また、Chromeの検証より問題の「ロゴ画像」のソースを確認すると「wp.sample.com〜/.png」となっておりました。
「www.sample.com/〜/.png」の形式にしようとしてみましたが、多分セッションが切れる問題と直結しているので、これを改善しないと始まらないでしょう。

最終目標

セッション切れの問題を解決さえできれば全て片付くと考えています。
どうにか「www.sample.com」からwordpressに完全に接続できるようにできれば、画像などもSSL化したドメインで投稿できるようになります。

お力添えよろしくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • CHERRY

    2019/05/14 09:28

    WordPressのダッシュボード(管理画面)で、「サイトアドレス(URL)」 と「WordPressアドレス(URL)」は、何が設定されていますか?

    キャンセル

  • mushi_fao

    2019/05/15 17:05

    お答えいたします。
    そちらにつきましても管理画面が2つあることから、それぞれのサブドメイン付きのものがそれぞれに表示されております。

    キャンセル

回答 3

checkベストアンサー

+1

Wordpressは直接公開以外での運用は必ずといっていいほどハマりますよね。

CloudFrontを前に置く場合は次の対応が必要になるかと思います。

wp-config.php

 if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
         $_SERVER['HTTPS'] = 'on';
-}
+} elseif (isset( $_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO']) && $_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO'] === 'https') {
+        $_SERVER['HTTPS'] ='on';
+}

以下、参考になさってみてください。
CloudFrontの下でWordpressを実行する時に色々ハマった話 後編

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/15 06:43 編集

    大変ありがたいご意見ありがとうございます!!!
    2点質問させてください。

    1. 現在の設定は以下です。

    if ( defined( 'WP_CLI' ) ) {
    $_SERVER['HTTP_HOST'] = 'localhost';
    }
    define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST'] . '/');
    define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST'] . '/');
    /** Absolute path to the WordPress directory. */
    if ( !defined('ABSPATH') )
    define('ABSPATH', dirname(__FILE__) . '/');
    if (strpos($_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO'], 'https') !== false) {
    $_SERVER['HTTPS'] = 'on';
    }

    多分、「http→https」の設定だと思うのですが、そのご教示いただけたコードを挿入する場合、何か重複してしまうようなことはありませんでしょうか?

    また、このコードは、
    【require_once(ABSPATH . 'wp-settings.php');】
    のコードより先に配置することで、「このページにアクセスする権限がありません。」になることを回避しています。

    https://lucklog.info/wp-ssl-error/

    2. 回答の中で参考にあげられていたqiitaの記事を拝見しました。
    記事内のコードとは少し違うコードを書かれていると思うのですが、演算子「+」「-」の有り無しは関係あるのでしょうか?

    よろしくお願い致します。

    キャンセル

  • 2019/05/15 08:52

    丸投げで恐縮ですが、CloudFront 側のマニュアル引用したほうが良い気がします。

    キャンセル

  • 2019/05/15 10:09

    1.
    現在
    if (strpos($_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO'], 'https') !== false) {
    $_SERVER['HTTPS'] = 'on';
    }
    が記載してあるので私の書いたコードを挿入する必要はありません。

    2.
    +-についてはdiffで差分を表す記号であり、コード本体ではありません

    te2jiさんのいうCloudFront側のマニュアルで参考になりそうなものを見つけることはできませんでしたが、
    AWSのblogで次の記事を見つけたのでリンクを張っておきます。
    https://aws.amazon.com/jp/blogs/startups/how-to-accelerate-your-wordpress-site-with-amazon-cloudfront/

    キャンセル

  • 2019/05/15 17:03

    返信ありがとうございます!

    とすると、解決策はまだわからなそうですね。。。

    そのAWSのブログも拝見しました。
    まだ試してはいないので、色々やってみてから改めて返信をさせて頂きます。

    よろしくお願い致します。

    キャンセル

  • 2019/05/16 08:29

    ヘッダに対してのマニュアルをイメージしてコメントしたのですが、提示の記事の方が適切ですね。大変興味深く読みました。
    丸投げ、失礼しました^^;

    キャンセル

+1

この記事を参考に、Forward cookies の設定を見直したところ、直りました!
https://aws.amazon.com/jp/blogs/startups/how-to-accelerate-your-wordpress-site-with-amazon-cloudfront/

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/16 08:30

    該当の記事では、WordPress に手を入れず、cloudfront の設定のみで乗り切っているように見えます。
    WordPress のコード変更はせず、管理画面に対しての Forward cookies のポリシー変更のみで対応できたということでしょうか?

    キャンセル

  • 2019/05/16 08:51

    そのようですね、。
    実際なぜ直ったのかは明確に言うことはできないです。

    やったこととしてはDefault(*)のForward Cookiesのホワイトリストを見直して、全く同じ設定にしたということです。
    他のPath Patternに関しては、管理系なのでallでやってます。

    一応自分の見解としては、otolabさんからの回答で、
    http://wp.sample.comhttps://www.sample.comを行ったり来たりしているイメージですね。」
    というのがあったので、中継となるシステムはcloud frontの設定ぐらいしかなかったので、そこをひたすらいじった次第であります。

    キャンセル

  • 2019/05/16 09:19

    コメントありがとうございます。大変参考になりました!

    キャンセル

0

A: http://wp.sample.com と B: https://www.sample.com があって、

  • BからログインするとWP管理画面からの操作が一部行えない(問題2)
  • AからアクセスするとWP管理画面は正常に動く
  • が、画像のアップロードを行うとhttpへのアクセスが発生する(問題1)

という状況ですね?

問題1の方は、http://wp.sample.com/img/xxxx.pngみたいな形で記事にリンクが埋まってしまっているのではないかなという気がします。
WPには公開ホスト名の設定があったと思うので、その辺りから調整が効くのではないでしょうか。

問題2の方も同様の問題に思えます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/14 02:44 編集

    回答ありがとうございます。
    返信させていただきます。

    【問題2】
    一部のログイン状況において、「セッションの期限が切れました。」の無限ループが発生します。
    具体的にはWordpressのサイトカラーを選んだり、ロゴ画像をアップロードしたりする『カスタマイズ画面』へ行こうとすると無限ループが発生します。
    記事の投稿については、ただただ更新ができません。

    【問題1】
    画像に対するURLが2つ出来上がっています。
    「wp.sample.com」からログインして確認すると、画像に対応するURLは「https://wp.sample.com/img/xxxx.png」となっており、
    「www.sample.com」からログインして確認すると、「https://www.sample.com/img/xxxx.png」となっております。

    また、Chromeの検証より問題の「ロゴ画像」のソースを確認すると「wp.sample.com〜/.png」となっておりました。
    よって、【問題2】のセッションループを解消できれば、「www.sample.com」が有効になるものかと思われます。

    この情報は質問本文に補足として追加させていただきます。
    よろしくお願い致します。

    キャンセル

  • 2019/05/15 08:45

    > 一部のログイン状況において、「セッションの期限が切れました。」の無限ループが発生します。

    http://wp.sample.comhttps://www.sample.comを行ったり来たりしているイメージですね。
    ログインはwww.sample.comから行っているのに対し、特定のメニュー項目(?)などがwp.sample.comになっているイメージ。

    WPとしてはwp.sample.comとして可動している状態なのだと思います。

    <img src="<可動ホスト名>/<画像のパス>">のような動的な処理が内部にあるのだと思います。

    キャンセル

  • 2019/05/15 17:07

    わかりやすい分析ありがとうございます!
    言葉で表されて、自分の中でも整理できました。ありがとうございます。
    解決法が今のところなさそうなので、引き続き宜しくお願い致します。

    キャンセル

  • 2019/05/15 17:44

    http://wpdocs.osdn.jp/wp-config.php_%E3%81%AE%E7%B7%A8%E9%9B%86
    > WP_SITEURL
    > WP_SITEURL は WordPress アドレス (URL) を定義します。

    > WP_HOME
    > WP_HOME は サイトアドレス (URL) を定義します。

    > Cookie ドメインの設定
    > 複雑なドメイン設定に対して WordPress cookie にドメインセットを指定できます。

    この辺りのどれかだと思うんですけどね。あとはこれらをキーに調べてみると良いかも。

    キャンセル

同じタグがついた質問を見る

  • WordPress

    8935questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • AWS(Amazon Web Services)

    2534questions

    Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

  • Amazon Route 53

    22questions

    Amazon Route 53 はAmazonが提供する、 可用性と拡張性に優れた ドメインネームシステム(DNS)サービスです。

  • Amazon CloudFront

    13questions

    Amazon CloudFrontは、AWSの高速且つ高パフォーマンスなコンテンツ配信(CDN) サービス。容量の大きいコンテンツをキャッシュさせてWebサーバの負荷を軽減し、サーバダウンの防止など安定した配信が可能になります。