質問: サーバーにHPをアップロードしてブラウザからのファイル読み込みを制限したいと考えています。 とりあえず、「deny from all」と書いた.htaccessを片っ端からデイレクトリに入れてみて挙動を見たのですが、phpはブラウザアクセスできなくて成功。しかしながらcssとjsはブラウザアクセスできないのは良いとして、全く機能しなくなってしまいました。ここはブラウザ拒否にすべきではないものなのでしょうか?
回答: 目的や前提がわかりませんが、ブラウザからアクセスできたとしてPHPは出力処理があればその出力処理部分しかブラウザからは見れません。 当然PHPのコードを見るのは不可能です。 ただフレームワークなどは「直接実行されないファイル」をブラウザからアクセスできないディレクトリに置くようになっており、ドキュメントルート配下のPHPはindex.phpだけというのもよくあります。 teratailもPHPフレームワークで作られているようなので、作りはおおよそ同じようなものと思われますが、これは.htaccessによって「すべてのアクセスをindex.phpに集める」という指定がされているためです。 で、取得したURIを解析して振り分けています。 ただ、CSS、JavaScript、画像などはPHPプログラムから直接参照するわけではなく、PHPが出力したHTMLコードから呼び出すように記述されていて、ブラウザ側がそれを解釈するようになっているため、ブラウザからアクセスできるようになっています。(あくまでフロントサイドなので) そのため、.htaccessにて、`アクセスはindex.phpに集める、ただしcss/* ,js/* ,images/* は除く`といった指定が書かれることがあります。 どのような理由や背景、前提で今回の対応をしようと思い立ったのかはわかりませんが、参考まで。