特定のカテゴリからのリストを拒否するようにApache .confファイルを構成しようとしましたが、このカテゴリ内の特定のファイルを許可したいのですが。ディレクトリルールはファイルルールよりも「強い」ようです。そのため、両方を使用すると、その特定のファイルにアクセスできません。
これは私が試すものです:
<Directory /var/www/denied_directory>
order deny,allow
Deny From All
</Directory>
<Files safefile.php>
Order Allow,Deny
Allow from All
</Files>
適切に構成されていれば、完全に機能します。
<Directory /var/www/denied_directory>
Order allow,deny
<Files test.php>
Order deny,allow
</Files>
</Directory>
Apache 2.4で、適切な測定のために環境変数の追加テストを行います。
参照: 指令が必要
<Directory "/wikis/foswiki">
Require all denied
# Allow access to toplevel files ending in .html (in particular index.html) only
# (comment out if you don't care for this)
<Files ~ "\.html$">
<RequireAll>
Require all granted
Require not env blockAccess
</RequireAll>
</Files>
</Directory>
ファイルディレクティブをディレクトリディレクティブ内に配置します。
@acondの回答に不足している行があります。 Allow
が必要だと思います:
<Directory /var/www/denied_directory>
order deny,allow
Deny from All
<Files safefile.php>
order deny,allow
Allow from All
</Files>
</Directory>
各ディレクティブにはルールが1つしかないので、order
行は関係ないのではないかと思います。ネストされたルールが複数あるため、おそらく最も外側のルールが必要です。 (私はApache構成が初めてです)
.htaccess
ファイルをディレクトリー(フォルダー)に入れ、以下のブロックを使用します。
order deny,allow
deny from all
<Files safefile.php>
allow from all
</Files>
これにより、../safefile.php
ファイルですが../
。
許可したい場合../
(たとえば、../index.php
)、これを行う必要があります:
order deny,allow
deny from all
<FilesMatch ^(index\.php)?$>
allow from all
</FilesMatch>
HTTPパスワードによってアクセスが制限されているときに特定のファイルを許可する。パスワード保護はファイルシステムごとに定義されており、特定の許可ファイルはURIによって定義されています。 Apache 2.4用に更新されました。
<Directory /path/to/directory/>
AuthName SecureArea
AuthType Basic
AuthUserFile /path/to/passwd-file
Require user my-user
SetEnvIf Request_URI "path/to/uri-allowed-1.php" allowedURL
SetEnvIf Request_URI "path/to/uri-allowed-2.php" allowedURL
Require env allowedURL
</Directory>