2011-11-12 2 views
0

のは、我々は次のスキーマを持っているとしましょう:システムルートにアクセスできないようにすることをお勧めしますか?

root/ 
    application/ 
     -public/ 
      index.php 
      css/ 
      img/ 
      javascript/ 
     ... 
    system/ 
     ... 

私は、次のルールとルートでの.htaccessファイルを作成する場合ことを考えていた:

RewriteEngine On 
RewriteRule \.(css|jpe?g|gif|png|js|ico)$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ application/public/index.php?url=$1 [QSA,L] 

が、私は他のを作ることができるだろうpublic以外のフォルダはアクセスできません。 index.phpはアプリケーションが必要とするすべてのファイルをロードし、必要なものをインクルードして要求するファイルです(相対パスを間違えて):アプリケーションは実際にindex.phpで実行され、cssスタイルシート、画像、またはjavascriptスクリプトなどのすべてのパブリックファイルはパブリックフォルダにあります。したがって、www.site.com/の桁にroot/application/public /を参照するため、ユーザーとしてシステムフォルダにアクセスできません。私は正しい?

しかし、htaccessルールが設定されていません... htaccessをルートフォルダに入れて、ルートフォルダにアクセスしようとすると、ブラウザにルートフォルダのファイルの一覧が表示されますシステム)。なぜそれは働いていないのですか?

index.phpのルートフォルダにいたとき、私はこのしばらく前に使用:

RewriteEngine On 
RewriteRule \.(css|jpe?g|gif|png|js|ico)$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 

、それがうまく働きました。なぜ新しいものが働いていないのですか?

答えて

0

私の最初のコードは正しかったです。忘れてしまった3行目を除いて/ application/public /にリダイレクトする代わりに私に見せてくれました。 3行目のコメントはすべてうまくいきました。

+1

あなたはまだ.htaccessを通してこれをしてはいけません。 1回のリクエストごとにリロードされます。これらのディレクティブを仮想ホスト定義に配置する必要があります。 – meagar

+0

@meagar how?どこ?これは誰かのアプリケーションにダメージを与えますか、それとも遅くしますか? – Shoe

+0

遅く、.htaccessが有効になっている必要があります。 – meagar

4

プロジェクトのドキュメントルートは、/publicフォルダに設定する必要があります。

この方法は、Webユーザーにとって唯一のアクセス権です。

編集:詳細はApacheのマニュアルをご確認http://httpd.apache.org/docs/2.0/mod/core.html#documentroot

+0

"DocumentRoot application/public /"の前または後に "Server Error"を追加した場合、それが追加された場合。 – Shoe

+0

'DocumentRoot'は絶対パスでなければなりません。私。パブリックフォルダへのフルパス。 – PeeHaa

+0

しかし、私はそのファイルへの最終的なクライアントパスを知ることができません。私は、アプリケーション/とアプリケーション/パブリック/フォルダがあることを知っています。他に何もない。 – Shoe

関連する問題