フォーム(ContactForm)をSSL化する前の記事アーカイブ(全エントリー一覧)次の記事2014年03月05日フォーム(ContactForm)をSSL化するツイートContactFormで作成したフォームをSSLで運用する方法について、よく問い合わせいただいています。ContactFormをSSL化して動作させる方法を説明します。※ContactFormでの実現方法であり、ExtraFormに関してではありません。※サイトコンテンツは、HTTP・HTTPSのどちらでも同じURLで表示出来る様になっているものとします。ContactFormでは次のようにHTMLを出力するようになっています。初期ページはContactFormを出力するMTMLタグ(カスタムフィールドの種類を「フォーム」としたものなど)を処理した結果が静的にビルドされて出力される確認画面は「フォームの設定」で「テンプレート」として選択したテンプレートの内容を、mt-contactform.cgiが動的にビルドして表示される完了画面は「フォームの設定」で「遷移先URL」が指定されていない場合、確認画面と同じく「フォームの設定」で「テンプレート」として選択したテンプレートの内容を動的にビルドして表示される時々問い合わせをいただく「確認画面が真っ白になる」という状態の原因は、「フォームの設定」で「テンプレート」で表示に利用するテンプレートが選択されていないことが原因になります。HTMLに読み込まれているファイルのURLを調整するSSL領域にHTMLを置く場合の注意点としては、そのHTMLから読み込まれる画像はJS、CSSなどのファイルが同じくSSL領域に置かれている必要がある点です。上記の対応には、読み込み指定ファイルのURLで、同じくSSL領域にあるファイルに対するものとする必要があり、以下の2つの方法で対応可能です。/>方法としてはどちらでも問題無いですが、ヘッダーやフッターで共通に利用しているファイルに対しても書き換えが必要なことを考えると、相対パス指定にした方が通常のページに対しても共通で使えるので良いと思います。一つ一つ書き換えるのは面倒ですし、テンプレートタグで出力するものもあるので、書き換え処理はグローバルフィルタのreplaceやregex_replaceを使って処理をします。replace="http://www.powercms.jp/","/">書き換えたいテンプレート部分</MTFor>注意点としては、上記を行なうとURLすべてが置き換わってしまうので、変更したくない箇所(ページ間のリンク)にも影響を与えてしまうことです。可能な限り置換する処理の対象を絞り込み、置換処理は以下のようにするとよいでしょう。replace='src="http://www.powercms.jp/"','src="/"'>書き換えたいテンプレート部分</MTFor>フォームを出力するカスタムフィールドタグに、モディファイア指定する形でも良いです。replace='src="http://www.powercms.jp/"','src="/"'$>formのaction値を変更するHTML全体は以上のような作業となりますが、formタグのaction値についてもSSL領域のフォームCGIを指している必要があります。https://www.powercms.jp/mt/HTTPプロトコルでの指定だったり、以下の様なルート相対パスでの記述だった場合には、その値を元にaction値が生成されるので、表示しているHTMLの状態によって、セキュアHTTPで送信したりHTTPで送信したりと一定しないことになります。/mt/また、管理画面は公開しないまま、別途公開エリアにContactFormを設置するケースでは、別なURLを指定しなくてはならなくなります。この様な場合には、以下の環境変数を設定することで、フォームの設置先パスを指定することが出来ます。