web-dev-qa-db-ja.com

Apache-ディレクトリを拒否し、そのディレクトリに1つのファイルを許可する方法

特定のカテゴリからのリストを拒否するようにApache .confファイルを構成しようとしましたが、このカテゴリ内の特定のファイルを許可したいのですが。ディレクトリルールはファイルルールよりも「強い」ようです。そのため、両方を使用すると、その特定のファイルにアクセスできません。

これは私が試すものです:

<Directory /var/www/denied_directory>
     order deny,allow
     Deny From All
</Directory>

<Files safefile.php>
    Order Allow,Deny
    Allow from All
</Files>
24
Maor Barazany

適切に構成されていれば、完全に機能します。

   <Directory /var/www/denied_directory>
        Order allow,deny
        <Files test.php>
           Order deny,allow
        </Files>
   </Directory>
20
akond

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>
9
David Tonhofer

ファイルディレクティブをディレクトリディレクティブ内に配置します。

4
David Chan

@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構成が初めてです)

1
RufusVS

.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>
0
Vahid

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>
0
David