【ZendFramework】CPIサーバでZendFrameworkを利用したサイトにSSLを使用したい場合の.htaccessの書き方
2011年7月現在、CPIサーバで一般に契約できるプランでは、SSL(セキュア)用のディレクトリは無く、あまり何も考えずにSSLが導入できますが、(少し・かなり?)古いプランで契約している場合にSSL対応ページを作成する場合は、「secure」ディレクトリ内にファイルを設置する必要がある。
CPIの古いサービスにSSLを導入したい
(古いプランでの)簡単すぎるツリーはこんな感じ。
【ROOT】
├【HTML】……非セキュア
├【secure】……セキュア
(以下略)
シンボリックリンクを利用して運用する
単体のメールフォームなどは「secure」ディレクトリ内に設置すれば良いが、CakePHP や Zend Frameworkなどのフレームワークを利用している場合はそうもいかないので、シンボリックリンクを利用し、仮想的に同一ファイル構造として動作させる必要がある。
あとは、通例通りmod_rewriteを利用してURLを書き換える。
以下の記述は共有SSLでの書き方です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
AddHandler x-httpd-phpXXX .php suPHP_ConfigPath /usr/home/ユーザID/html/ <Files ~ "\.ini"> deny from all </Files> Options +Includes AddHandler server-parsed .shtml .html .htm <IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On ## SSL RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{HTTP_HOST} ^mtXXXX.secure.jp$ RewriteRule !\.(js|ico|gif|jpg|jpeg|png|css|zip|pdf|swf)$ /~ユーザID/index.php </IfModule> |
各行の解説
1. CPIに必要な記述。ディレクトリごとにバージョンの違うPHPを動作させてみてリも出来る(らしい)
2. php.ini を設置しているディレクトリまでのパス。(とりあえず他ディレクトリと同じバージョンとする)
4. php.ini を閲覧されないように処理
8. ファイル一覧が出ないように処理
9. ssiが動くファイル拡張子を設定(shtml, html, htmで動くよう設定)
11. ここからmod_rewrite開始
12. シンボリックリンクを有効にする。(CPIサーバーでmod_rewriteを有効にするにはこの記述が必要)
13. 書き換えの可否を設定(デフォルトがOFFなので、ONにする)
16. !-d は存在するディレクトリ名にはルールを適用しない、の意味
17. !-f は存在するファイル名にはルールを適用しない、の意味
18. https接続用のURL。「$」は正規表現で行末の意味
19. 前半内容でアクセスの場合、後半部に書き換えるという意味
上記.htaccessを作成し、secureディレクトリに設置。
次にドキュメントルートにある index.php を secureディレクトリにもコピーし、BASE_DIRなどを指定してあげてください。