Eyecatch ZendFramework

htaccess

CPIサーバでZendFrameworkを利用したサイトに、SSLを使用したい場合の.htaccessの書き方

2013/05/24

2011年7月現在、一般に契約できるプランでは、SSL(セキュア)用のディレクトリは無く、あまり何も考えずにSSLが導入できるが、少し古いプランで契約している場合にSSL対応ページを作成する場合は、secureディレクトリ内にファイルを設置する必要がある。

簡単すぎるツリーはこんな感じ。
【ROOT】
 ├【HTML】……非セキュア
 ├【secure】……セキュア
(以下略)

単体のメールフォームなどは件のsecureディレクトリ内に設置すれば良いが、CakePHPやZendFrameworkなど、フレームワークを利用している場合はそうもいかないので、シンボリックリンクを利用し、仮想的に同一ファイル構造として動作させる必要がある。
あとは、通例通りmod_rewriteを利用してURLを書き換える。
なお、以下の記述は共有SSLでの書き方です。

各行の解説(間違ってたらスミマセン)
1. CPIに必要な記述。ディレクトリごとにバージョンの違うPHPを動作させてみてリも出来る(らしい)。
2. php.iniを設置しているディレクトリまでのpath。(とりあえず他ディレクトリと同じバージョンとする)
4. php.iniを閲覧されないように処理。
8. ファイル一覧が出ないように処理。
9. sslssiが動くファイル拡張子を設定(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などを指定してあげてください。

-htaccess
-, , , ,