web-dev-qa-db-ja.com

Apacheでサブディレクトリを許可する

これはかなり単純な修正であり、検索時に同様の問題が発生したように思いますが、これらの解決策では修正できません。基本的に、問題はウェブサーバーのサブディレクトリにアクセスできないことです。 localhostに移動すると、インデックスが正常に表示されます。しかし、localhost/testにアクセスすると、403 Forbiddenエラーが発生します。

CentOSを実行しています。 /etc/httpd/conf/httpd.confファイルをいくつかの方法で編集しようとしましたが、うまくいきませんでした。 DocumentRootは/ var/www/htmlにあります。現在私は持っています:

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

以下を追加してみました:

<Directory "/var/www/html/test">
    Order allow,deny
    Allow from all
</Directory>

しかし、それでも403 forbiddenエラーが表示されます。

7
Danny

Httpd.conf内ですでに構成されているディレクトリの下のディレクトリへのアクセスを特に許可する必要はありません。

/ var/www/htmlは "AllowOverride None"で構成されているため、問題は.htaccessファイルがアクセス権を変更したことが原因ではありません。

残っている唯一の理由は、ファイルとディレクトリの権限が、webserver uidがこのディレクトリから読み取ることを許可していないことです。それらが何であるか、そして何をすべきかは、セキュリティモデルによって異なります。しかし、簡単な修正として、次のことを試すことができます。

# chmod a+rx /var/www/html/test
# chmod a+r /var/www/html/*

これで問題が解決した場合は、時間をかけてファイルの所有権と権限をより適切なものに修正してください。

8
symcbean

通常、正確な問題を確認するには、まずhttp error_logを確認することをお勧めします。

デフォルトの設定では、workshop-5.4ディレクトリにアクセスできるはずです。

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

それでもディレクトリにアクセスできない場合は、すべてがディレクトリのアクセス許可を示しています。その場合は、次のことを試してみることをお勧めします。

chown -R Apache.apache /var/www/html  # Assuming Apache as default User
chmod -R 755 /var/www/html            # Making sure all users can read and execute

別の端末で次のコマンドを実行します。

apachectl configtest && apachectl restart
tail -f /etc/httpd/logs/error_log     # Assuming default error_log location

(example.html)のような単純なhtmlファイルを追加してみてください:

<html>
<head><body>It works!</body></head>
</html>

最後に、ページを再読み込みし、example.htmlを読み込んでtailコマンドの出力を確認します。

3
mdiianni

もう1つのケースは、コメントで、ディレクトリ内にファイルがコピーされたとのことです。

403の原因となる構成を持つ.htaccessファイルがある可能性があります。

ドット「。」で始まる名前のファイルUnixでは非表示になっているため、ls -a

ここにドキュメント: https://httpd.Apache.org/docs/current/howto/htaccess.html

0
Samuel Åslund

それらの<Directory>ディレクティブをコメント化し、DocumentRoot /var/www/htmlおよびchown -R Apache:apache /var/www/htmlを設定して、httpdを再起動します。

<Directory>ディレクティブは、ディレクティブのグループを特定のファイルシステムディレクトリに適用する(つまり、権限を変更する)ために使用する必要があるため、通常は<VirtualHost>で使用します。

0
fsoppelsa

私の場合、SE Linuxが有効になっています。

setenforce 0

無効にする(テスト目的のみ)

0
Douglas Cooper