1

私が欲しいもの:

index.php以外のすべてのファイル/フォルダーを保護します。

Apache:

  • Apache / 2.4.2(Win32)OpenSSL / 1.0.1c PHP / 5.4.4
  • サービスとして実行(xampp 1.8)
  • 変更されていません

私のプロジェクト構造

URL: "http:// localhost / MyProject /"
PROJECT_DIRECTORY C:/ xampp / htdocs / MyProject /

プロジェクトディレクトリは次のようになります。

  • config(フォルダー)
  • リソース(フォルダ)
  • ソース(フォルダ)
  • index.php

問題:

常に403または500エラーが発生するため、.htaccessファイルに問題があります。

目標を達成するためにさまざまな設定を試しましたが、どれもうまくいきませんでした。Directory、DirectoryMatch、Files、FilesMatchなどを試しました。

しかし、私はそれが次のように簡単であるべきだと思います:

# Activate rewrite engine
RewriteEngine on
RewriteBase /

# Redirect all requests to index.php
RewriteRule ^(.*)$ index\.php?/$1 [QSA]

# Deny from all
Order deny,allow
Deny from all

# Allow only index.php
<Files "index.php">
Allow from all
</Files>

またはこのようなもの:

...

# Deny from all
<Directory />
Order deny,allow
Deny from all
</Directory>

# Allow only root dir
<Directory "/MyProject" />
Allow from all
</Directory>

誰かがこれを手伝ってくれますか?

編集:最近、タグを使用できないことがわかりました。.htaccessは、配置したディレクトリに対して有効であるため、.htaccess内にそのディレクトリを定義する必要はありません。これは私の問題を解決しませんでしたが、2番目の例が間違っていることは知っています。

4

1 に答える 1

1

あなたはこれを試すことができます:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(index\.php)$
RewriteRule ^ - [L,F]

これにより、403 Forbidden for otherで応答しながら、リクエストを通過させることができ/ます/index.php

ただし、このルールはすでにあります。

# Redirect all requests to index.php
RewriteRule ^(.*)$ index\.php?/$1 [QSA]

したがって、すべてがすでにindex.phpを介してルーティングされている場合は、実際には何も拒否する必要はありません。

于 2012-08-28T18:04:19.050 に答える