We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 6350
    • 421 Posts
    soushi さんの指摘どおり、config.inc.php で HTTP_VIA を使って site_url を変更したままの検証となっておりました。万全を期すため今回は新規インストールで行いました。

    まず結果から報告します。いままで一番大事な site_url のことが頭から離れておりました。

    (1)[~s数字~] 形式のリンク先が書き換えられず常に http:// となる。
    (2)Wayfinder のリンクが書き換えられず常に http:// となる。
    (3)Home へのリンクが常に ~/index.html となる。(フレンドリーurlを有効にして確認してください)

    したがって、プラグイン内で $modx->config(’site_url’) の処理ができない場合には config.inc.php に頼らなければならない。
    さらに makeUrl 関数内でも HTTPS による判断が行われており modx コアの修正なしには対処が難しいと考えております。

    これらの現象は coreserver などの特殊なサーバー環境にあると思いますが config.inc.php を変更しない限り
    https://ss1.coressl.jp/xxx.s78.coreserver.jp/modx/contact-us.html

    上記の赤字部分が $_SERVER(’HTTP_HOST’) として取得してしまう事に有ります。その結果 https:// でのアクセスであるにもかかわらずヘッダー内の <base href= の部分が http://xxx.s78.coreserver.jp/~ ということになり SSL の警告が表示されている状態です。


    2/5 より提供される SAKURA の共有SSL にも非常に興味のあるところですがどのような方で提供されるのか興味のあるところです。ただし2~5月で切り替えていくということなので自分にまわってくるのがいつ頃になるのか不明です。soushi さんの使っている共有サーバはアドレスが / でつながず単純でいいですね。
      • 6350
      • 421 Posts
      コアの書き換えを最小限で済ます方法を思いつきました。ご検討ください。

      config.inc.php の18行目 $https_port = ’443’; の下に次のコードを挿入します。
      赤字の部分が共有SSL サーバー名です。
      coreserver にとって HTTPS はその後書き換えられる事はないので index.php を抜けるまで有効です。
      sslSwitcher プラグインも rc1の今のままHTTPS での判定部分を変更する必要はありません。

      if (isset ($_SERVER[’HTTP_VIA’])) {
      $_SERVER[’HTTPS’] = ’on’;
      $_SERVER[’SERVER_PORT’] = $https_port;
      $_SERVER[’HTTP_HOST’] = ’ss1.coressl.jp/’.$_SERVER[’HTTP_HOST’];
      } else {
      $_SERVER[’HTTPS’]=’off’;
      }

      ただし sslSwitcher 62行目の部分だけ解決することができません。
      $url = $modx->makeUrl($key);

      この部分を $httpsDomain に ’/’ が含まれていれば
      $url = $modx->makeUrl($key,’’,’’,’full’);

      に置き換えるなどの処理を入れていただくと coreserver/XREA など多くの人が使っているサーバーに対応できるものと思います。
        • 28073
        • 164 Posts
        こんばんわ smiley

        返信が遅くなりすいません。
        そして細かい説明と検証ありがとうございます。

        なるほど、coreserverはSSLを使ったとき$_SERVER(’HTTP_HOST’)に入るドメインが正しくないんですか。。。
        squidがhttpsのリバースプロキシとして動作してるっぽいですね。
        これは確かに厄介です :’(
        僕の使っているレンタルサーバはSSL周りの融通はいいかもしれませんが、結構重いんですよ(笑)
        ただ僕の使い方が激しいだけという話も laugh

        修正はdainitiさんが提案された内容くらいしか今のところ思いつかないです。
        ここはプラグインでも対応できないですね(--;
        sslSwitcher内でドメインをフルパスで記述する方法はプラグインの設定でon/offできるように調整してみます。
        あとcoreserverの場合のコアソースの修正はsslSwitcherのドキュメントに補足として書くようにします。
        dainitiさんの説明を使わせてもらってもいいですか?

        修正は今週末を目処にやりたいと思います smiley
          • 6350
          • 421 Posts
          Quote from: soushi at Feb 04, 2009, 11:51 AM

          dainitiさんの説明を使わせてもらってもいいですか?
          どうぞ、こんなもんでよければいくらでもお使いください。
          この方法をつかっても makeUrl だけはごまかせないんですよね。 kiss

          あと、ditto の相対アドレスの件も僕の中では未解決です。
            • 26012
            • 324 Posts
            Quote from: dainiti at Feb 04, 2009, 05:37 PM

            この方法をつかっても makeUrl だけはごまかせないんですよね。 kiss
            そうなんですか~ 非常におしいですね。
            Quote from: dainiti at Feb 04, 2009, 05:37 PM

            あと、ditto の相対アドレスの件も僕の中では未解決です。
            テンプレート中の
            <a href="[~s[+id+]~]" title="[+title+]">[+title+]</a>
            ですよね。
            P.S. 気づいてると思いますがラブレター送りました。 wink
              • 6350
              • 421 Posts
              Quote from: sama55 at Feb 04, 2009, 10:17 PM

              テンプレート中の
              <a href="[~s[+id+]~]" title="[+title+]">[+title+]</a>
              ですよね。
              気を持たさずに nl_sidebar と早く言え。sを追加で解決しますた。
              Quote from: sama55 at Feb 04, 2009, 10:17 PM
              P.S. 気づいてると思いますがラブレター送りました。 wink
              すんません、別に好きな人が・・二股かけようと検討中です。
                • 6350
                • 421 Posts
                以下のコードを sslSwitcher 先頭に挿入することで解決しました。 case "OnWebPageInit": のすぐ下でも OK のようです。
                こうすればもちろん config.inc.php を触る必要はありません、確認済みです。
                /* 多段SSL coreserver、XREA など(正しい用語は何方式?)をお使いの場合はこのコメントアウトをはずしてください。
                $https_port = '443';
                if (isset ($_SERVER['HTTP_VIA'])) {
                	$_SERVER['HTTPS'] = 'on';
                	$_SERVER['SERVER_PORT'] = $https_port;
                	$_SERVER['HTTP_HOST'] = $httpsDomain;
                	$modx->config['site_url'] = 'https://'.$httpsDomain.$modx->config['base_url'];
                } else {
                	$_SERVER['HTTPS']='off';
                }
                */
                

                もちろん、専用SSL soushi さんの使っている方式のSSLサーバーではここは無視されるのでコメントアウトする必要はありませんが。こうすれば余分な説明も必要なくなります。
                  • 6350
                  • 421 Posts
                  >> soushi さんへ

                  さくらインターネットの共有SSL
                  http://support.sakura.ad.jp/support/manual/rs/set_ssl_kyouyu.shtml

                  初期ドメインの場合
                  以下のように独自ドメインのSSLと同じ使い方ができます。
                  この場合 sslSwitcher も未改造で利用が可能ですかと思われます。
                  SSLのURL https://example.sakura.ne.jp/

                  独自ドメインまたはさくらのサブドメインの場合 coreserver や xrea と同じ形式になるようです。
                  SSLのURL https://secureNNN.sakura.ne.jp/example.com/

                  なお、新しくわかったことですが HTTP_VIA というのはプロクシサーバーの情報を取得するための環境変数のようです。

                  なお、遅くても 4/20 頃にはこちらでもさくらの共有 SSLの利用環境が整うと思うので coreserver、xrea、sakura の共有SSL対応という名目で sslSwitcher の新しいバージョンを出すタイミングとしていい頃かもしれません。

                  ただし、MEGUさんはどんな手を使ったのか新しいサーバーにすでに乗り換えてるようです。借り直したのかな?こちらに頼めば今すぐでも sakura で検証できそうですが? huh

                  ここも最初のタイトルから大幅に脱線してきました!!
                    • 28073
                    • 164 Posts
                    >dainitiさん

                    フォローありがとうございます。
                    最近中々顔を出せずに全然追っかけられなくなってます(T_T)
                    明日は時間取れそうなので、過去の記憶を掘り起こして修正版を用意してみます。
                      • 6350
                      • 421 Posts
                      4月の上旬くらいまでで大丈夫かと思いますが。

                      今回の改訂で Wayfinder のリンク先まで対応してもらい大変ありがたいのですがページ数の多い人にはここがネックになって敬遠されないかと心配しています。 smiley