We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 26012
    • 324 Posts
    すんません・・・かなりアホなこと言っちゃいました?
      • 33488
      • 429 Posts
      えっ・・・・普通に半角でその通りに入力してたりするんですが・・・。


      XREA対応のSSL以外と面倒です。
      HTTPかHTTPSかは$_SERVER[’HTTP_VIA’]が存在しているとHTTPSできているっていう判断でいけます。
      閉鎖したサイトの残骸から見つけましたが、多分、ぐぐれば出てくるかも・・。

      上記の判断にするように変更すれば、基本的にはいけるんですが・・・、ただ、SSLにすることによってBASE_HREFとかも変えないとなったりするので、SSLのページはSSL用のテンプレートとかメニューナビとか専用に作らないと駄目っぽいです。
      PLUGINでなんとかしようと考えたら頭がパニックに・・(><)
      多分、SSLSwitherのIDの記述とWayfinderとかのテンプレートを組み合わせればいいはずです。(と ひらめいた)
      ということで、そうしさんの判定ロジックを上記のものにするとHTTPSへの切り替えは可能です。
      CAPTCHA画像は頭にHTTPS用の/ホスト名を付ければOKでした。


        • 6350
        • 421 Posts
        Quote from: sama55 at Jan 27, 2009, 02:09 AM

        すんません・・・かなりアホなこと言っちゃいました?
        いえいぇ、毎度お手数掛けて恐縮しております。でも makeURL にはすべて base_url が頭についてくるようなので config.inc.php 側で固定したほうが早そうです。あまりコアをいぢると泥沼に入っていきそうなので・・

        いまこれを書いてから ZeRo さんのコメントが入りました。いまから HTTP_VIA ちょっと見てみます。
        http://modxcms.com/forums/index.php/topic,32384.msg197527.html#msg197527

        ようやく全体像がわかってきました。config.inc.php はノーマルの状態で説明します。
        また HTTP_VIA にかかわらす 画像への参照に base_url の不可は不要だと思います。

        ■ブラウザによる URI の解釈と modx の base_url の組み合わせによる共有SSL利用時の功罪
        -------------------------------------------------------------------------------------
        <head>
        <base href="https://ss1.coressl.jp/xxx.s78.coreserver.jp/modx/" />
        </head>
        <body>
        <img src="/modx/manager/includes/veriword.php">

        </body>
        -------------------------------------------------------------------------------------
        上記の書き方で赤字の部分が eForm を使った場合に base_url で付加される部分ですがブラウザで表示した場合にCAPTCHA の画像プロパティーを見ると、
        https://ss1.coressl.jp/modx/manager/includes/veriword.php のようなアドレスになり、画像は表示されません。このような動作はブラウザ側の解釈でこのようになっているようです。また modx で取得した環境変数 HTTP_HOST は常に xxx.s78.coreserver.jp となっています。

        赤字部分を削除して相対アドレスでアクセスした場合には<base href= を基準にして画像へのアドレスが以下のように正常に評価され CAPTCHA 画像は正常に表示されます。
        https://ss1.coressl.jp/xxx.s78.coreserver.jp/modx/manager/includes/veriword.php
        要するに「チャンク、スニペットなどのソースコード内で画像への参照アドレスは base_url を使わないようにしてほしい」ということです。

        環境変数が SERVER_PORT とか SERVER_HTTPS でなく https も部分を文字列としてとってくる方法があればまた、別の方法も考えられるのですがいまのところページごとに自作スニペットと config.inc.php の書き換えで対応する以外ないようです。

        それに SERVER_HTTPS を取得できない coreserver にまで modx に対応しろというのは無理なことがわかりました。さくらの共有SSLはどうなるんでしょうかね。
          • 6350
          • 421 Posts
          Quote from: ZeRo at Jan 27, 2009, 02:58 AM

          XREA対応のSSL以外と面倒です。
          HTTPかHTTPSかは$_SERVER[’HTTP_VIA’]が存在しているとHTTPSできているっていう判断でいけます。
          (1)
          config.inc.php の 41 行目を以下のように変更することで自作スニペットも必要なくなりました。もちろん <base href= もそのまま使えるのでテンプレートの改造さえ必要がなくなりました。
          $site_url= ((isset ($_SERVER[’HTTPS’]) && strtolower($_SERVER[’HTTPS’]) == ’on’) || $_SERVER[’SERVER_PORT’] == $https_port) ? ’https://’ : ’http://’;
                      ↓
          $site_url= (isset ($_SERVER[’HTTP_VIA’])) ? ’https://ss1.coressl.jp/’ : ’http://’;
          Quote from: ZeRo at Jan 27, 2009, 02:58 AM

          上記の判断にするように変更すれば、基本的にはいけるんですが・・・、ただ、SSLにすることによってBASE_HREFとかも変えないとなったりするので、SSLのページはSSL用のテンプレートとかメニューナビとか専用に作らないと駄目っぽいです。
          (2)
          もちろん base_url も http:// からのパスにする必要があります。これは Wayfinder のために固定。いまは Contact Us へはウェブリンクからジャンプしているので特に専用ナビとか必要はありません。
          $base_url = ’http://xxx.s78.coreserver.jp/modx/’;

          (3)
          eForm のソースから veriword.php への base_url を削除して相対アドレスにする。


          ついさっきまで断念していた、念願の動作が3箇所の変更だけですごく簡単に達成できましたヽ(^o^)丿ヤッホー
          ZeRo さん、sama55 さん・・ほんとうにありがとうございました。 あっ tkfm さんもありがとうございました。
            • 33488
            • 429 Posts
            configでやるのはよい手ですね。
            それならプラグインでもできるかも・・・OnPageInit(だっけか)で無理やり$modx->config[’site_url’]を同じロジックで書き換えちゃえばいけるんじゃないかなぁ。

            それとSSLSwitcher改造版でリダイレクト処理もいけるかも・・・。
              • 6350
              • 421 Posts
              SSLSwitcher とか Encryption の改造にも一度トライしてみようと思いますが、あまりリダイレクト使いまくると携帯に対応したい場合 docomo とかでは「ページが移動しました」とか表示されませんか。

              テンプレートチェンジャーとかもリダイレクトで切り替えてるんだったら大丈夫なのかな?
                • 26012
                • 324 Posts
                いかん・・・話についていけない・・・

                元々、ここでやろうとしてることがMODxの現状の機能を超えたイリーガルなことなんで、
                局所的な対応になってしまうことはある程度やむを得ないと思うのですが、上記の改造が、
                より汎用性のある解とはどうしても思えない。(他にアプローチがあるんじゃないかと・・・)

                (2)の$base_url = ’http://xxx.s78.coreserver.jp/modx/’;  これって相対パスを排除ってことですよね?


                といってる間に「SSLSwitcher とか Encryption」 ですか・・・
                  • 6350
                  • 421 Posts
                  Quote from: sama55 at Jan 27, 2009, 04:47 AM

                  元々、ここでやろうとしてることがMODxの現状の機能を超えたイリーガルなことなんで、
                  局所的な対応になってしまうことはある程度やむを得ないと思うのですが、上記の改造が、
                  より汎用性のある解とはどうしても思えない。(他にアプローチがあるんじゃないかと・・・)
                  coreserver のように SERVER_HTTPS が取れない場合はしょうがないんじゃぁないかと思います。
                  Quote from: sama55 at Jan 27, 2009, 04:47 AM

                  (2)の$base_url = ’http://xxx.s78.coreserver.jp/modx/’;  これって相対パスを排除ってことですよね?
                  今回は Wayfinder のページリンクが相対パスになるのが困るので http:// で base_url を固定しています。
                  これは、共有SSLか専用SSLかにかかわらず問題になります。
                  ここを触らずに Wayfinder 側で対応させるにはこちらで検討した &rowTpl を使う方法などもあると思います。ditto とかまで対応すると作業が増えるので今回は手抜きです。config.inc.php だけの変更で済むので
                  -------------------------------------------------------------------------------------
                  <li[+wf.id+][+wf.classes+]>
                  <a href="http://xxx.s78.coreserver.jp/modx/[+wf.link+]" title="[+wf.title+]" [+wf.attributes+]>[+wf.linktext+]</a>
                  [+wf.wrapper+]
                  </li>
                  -------------------------------------------------------------------------------------
                  赤字部分は HTTP_HOST で対応すれば汎用化はできそうです。
                    • 6350
                    • 421 Posts
                    せっかくなので、Wayfinder で対応する方法も試してみました。

                    (A)[!Wayfinder? &rowTpl=`下記内容でつくったチャンク名`’!] を追加してメニューを表示する
                    -------------------------------------------------------------------------------------
                    <li[+wf.id+][+wf.classes+]>
                       <a href="http://xxx.s78.coreserver.jp[+wf.link+]" title="[+wf.title+]" [+wf.attributes+]>[+wf.linktext+]</a>
                       [+wf.wrapper+]
                    </li>
                    -------------------------------------------------------------------------------------
                    (B)config.inc.php の $base_url を変更前の状態に戻す。

                    いちおう思ったように動きましたが新たに2つの問題が発生しました。
                    (1)ウェブリンクのリンクがおかしくなる、こんな感じ
                      https://xxx.s78.coreserver.jp/modx/https://ss1.coressl.jp/xxx.s78.coreserver.jp/modx/contact-us.html
                      この場合にはウェブリンクを使わずにSSLSwitcherとかをつかって http: から https: に自動切換えをしたほうが簡単だとは思いますが
                      Wayfinder の使い方で回避する方法はあるんでしょうか。(・・?

                    (2)共有SSLの場合のみですが Weblogin のリンク先が action="/modx/contact-us.html" となるため実際には
                      https://ss1.coressl.jp/modx/contact-us.html のようなアドレスで呼ばれる。
                      したがってここにも手を入れる必要がありそうです。

                      https:// でアクセスされた場合には以下のようにアドレスを付け加える
                      action="https://ss1.coressl.jp/xxx.s78.coreserver.jp/modx/contact-us.html"

                      ただしサンプルサイトのような http: と https: のページが混在するような Weblogin は使うべきではないですね。
                      共有SSLを使う場合の注意点で気が付いたことはいまのところ以上です。
                      • 26012
                      • 324 Posts
                      WayFinderには、フルパスを出力するオプション(fullLink)があるのですが、何か役に立ちますか?
                      (fullLinkオプションは、Let’s enjoyのリソース解説にはありません)

                      余談になりますが、私は主にMODxをサブフォルダにインストールしています。
                      そのせいかどうかは不明ですが、ページ内のアドレス表記が、ドメイン名を含んだ絶対パス、
                      現在のページからの相対パス("/"が付かないアドレス)、それと、ウェブルートからのパス
                      ("/"から始まるアドレス)の3種類が混在します。ウェブサーバを搭載しないオフライン環境で
                      デモしたくて、サイトをエクスポートしたのですが、このパスの違い(特に"/"ありのやつ)が
                      えらく不都合だったので、すべてのページのすべてのパスをドメイン名を含んだ絶対パスに
                      してから、秀丸の一括置換で対応しました。