web-dev-qa-db-ja.com

Apache DirectoryディレクティブはDocumentRootに関連しているはずですか?

Apache DirectoryディレクティブはDocumentRootに関連しているはずですか? VirtualHostのコンテキストで質問しますが、違いはありません。

言い換えると、それは次のようになるはずです:

<VirtualHost>
    DocumentRoot /var/www
    <Directory /var/www>
    ...

または

<VirtualHost>
    DocumentRoot /var/www
    <Directory />
    ...

どちらも機能します。 ApacheDirectorydocs と言う:

Directory-pathは、ディレクトリへの完全パス、またはワイルドカード文字列です...

...しかし、「フルパス」ステートメントと矛盾する2つの例を示しています。

ED:Apache Performance TuningページFollowSymLinksとSymLinksIfOwnerMatchにも矛盾する例がありますおよびAllowOverrideセクション。

楽しみのために、Debianのデフォルトのvhostセットアップを見て、これを見つけました。

<VirtualHost *:80>
    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
    ...
16
Jeff

ドキュメントは正しく、<Directory>ディレクティブはfullパスである必要があります。

最初の例は、VirtualHostsのディレクティブを構成する方法であり、ディレクティブ内のオプションをDocumentRootのみに適用します。 2番目の例は、ファイルシステムのルート(文字通り/)を参照しています。

残りのディレクティブは投稿していませんが、これは通常、Apacheを投獄してアクセスを制限する方法として使用され、通常(常にではありませんが)VirtualHostsを使用してメインのApache2.confまたはhttpd.conf構成ファイル内に配置されます独自のDocumentRootディレクトリへのアクセスを明示的に許可するため、2つはしばしば一緒に使用されます。

Apacheドキュメント から:

<Directory />のデフォルトのアクセスは、すべてのアクセスを許可することです。これは、Apache httpdがURLからマップされたすべてのファイルを提供することを意味します。これを次のようなブロックで変更することをお勧めします:
 
 <Directory />
すべて拒否する必要があります
 </ Directory> 
次に、アクセス可能にするディレクトリに対してこれをオーバーライドします。詳細は セキュリティのヒント ページを参照してください。
10
Craig Watson