2016年07月09日
Tweet
※結論からいうと http ではうまく動作しており、https では動作しなかったのです。そしてその原因は ssl.conf の方で、AllowOverRide を none としていたからでした・・・
以下はそれに気づくまでのメモです。
cakephp ・・・名前は確かに聞いたことがあったのですが、個人として利用したことは一度もありませんでした。
最近構築したサーバーではこの仕組を利用しているようで、これがうまく動作しないという連絡を受けたのです。
サーバーのエラーログを見てみると、file does not exist というのが出ていました。
ということで、まずはファイルの存在の確認をしましたが、確かに存在はしていないのですが、rewrite モジュールなどでうまくやっているようです。ってことはこの記述に問題があるのかな・・・ということで htaccess を疑うまでは比較的簡単に行きました。
そして htaccess の記載内容については、以下のとおりに行っていることを確認しました。
さて、それでもエラーの内容は変わらない・・。
続いて rewrite モジュールが正しく動作しているのかログを取って確認して見ることにしました。
mod_rewriteでデバッグするときに便利なログを出力する方法
httpd.conf ファイルに以下の行を記載
---
RewriteLog /tmp/rewrite.log
RewriteLogLevel 9
---
これを tail -f /tmp/rewrite.log で追いかけてみると、一切のログが表示されませんでした・・・。
http の設定である httpd.conf をいくら見ても、AllowOverRide の許可は行っています。それにもかかわらず htaccess で指定している rewrite が有効になっていないようです。
おかしいなー。そのように思いつつ、 httpでアクセスした場合と、 https でアクセスした場合に挙動が違うことが確認できました。というよりも http ではページも正しく表示されますし、rewrite のログも正しく出力されました。
もしや・・・。そうです。結局のところ https での設定で、AllowOverRide none という設定になっていました。そのため htaccess が有効にならず、file does not exist というエラーになっていたようです。
今回僕が構築したサーバーは要件の中に、http / https のどちらかをメインで利用するという決まりはありませんでした。そのため、基本的には http でアクセスするものの、全ページ https でもアクセスできるという、とてもざっくりとした内容でした。
※最近は https 必須とかになっているので、むしろ http での動作確認はあまり行わない例が増えています。また逆の場合には、顧客登録や買い物ページなどが https 必須なので、ここを重点的に動作確認する感じでした。
過渡期ゆえのなのかわかりませんが、とてもありがちなミスなので気をつけたいと思いました。
以下はそれに気づくまでのメモです。
cakephp ・・・名前は確かに聞いたことがあったのですが、個人として利用したことは一度もありませんでした。
最近構築したサーバーではこの仕組を利用しているようで、これがうまく動作しないという連絡を受けたのです。
サーバーのエラーログを見てみると、file does not exist というのが出ていました。
ということで、まずはファイルの存在の確認をしましたが、確かに存在はしていないのですが、rewrite モジュールなどでうまくやっているようです。ってことはこの記述に問題があるのかな・・・ということで htaccess を疑うまでは比較的簡単に行きました。
そして htaccess の記載内容については、以下のとおりに行っていることを確認しました。
さて、それでもエラーの内容は変わらない・・。
続いて rewrite モジュールが正しく動作しているのかログを取って確認して見ることにしました。
mod_rewriteでデバッグするときに便利なログを出力する方法
httpd.conf ファイルに以下の行を記載
---
RewriteLog /tmp/rewrite.log
RewriteLogLevel 9
---
これを tail -f /tmp/rewrite.log で追いかけてみると、一切のログが表示されませんでした・・・。
http の設定である httpd.conf をいくら見ても、AllowOverRide の許可は行っています。それにもかかわらず htaccess で指定している rewrite が有効になっていないようです。
おかしいなー。そのように思いつつ、 httpでアクセスした場合と、 https でアクセスした場合に挙動が違うことが確認できました。というよりも http ではページも正しく表示されますし、rewrite のログも正しく出力されました。
もしや・・・。そうです。結局のところ https での設定で、AllowOverRide none という設定になっていました。そのため htaccess が有効にならず、file does not exist というエラーになっていたようです。
今回僕が構築したサーバーは要件の中に、http / https のどちらかをメインで利用するという決まりはありませんでした。そのため、基本的には http でアクセスするものの、全ページ https でもアクセスできるという、とてもざっくりとした内容でした。
※最近は https 必須とかになっているので、むしろ http での動作確認はあまり行わない例が増えています。また逆の場合には、顧客登録や買い物ページなどが https 必須なので、ここを重点的に動作確認する感じでした。
過渡期ゆえのなのかわかりませんが、とてもありがちなミスなので気をつけたいと思いました。