これはかなり単純な修正であり、検索時に同様の問題が発生したように思いますが、これらの解決策では修正できません。基本的に、問題はウェブサーバーのサブディレクトリにアクセスできないことです。 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エラーが表示されます。
Httpd.conf内ですでに構成されているディレクトリの下のディレクトリへのアクセスを特に許可する必要はありません。
/ var/www/htmlは "AllowOverride None"で構成されているため、問題は.htaccessファイルがアクセス権を変更したことが原因ではありません。
残っている唯一の理由は、ファイルとディレクトリの権限が、webserver uidがこのディレクトリから読み取ることを許可していないことです。それらが何であるか、そして何をすべきかは、セキュリティモデルによって異なります。しかし、簡単な修正として、次のことを試すことができます。
# chmod a+rx /var/www/html/test
# chmod a+r /var/www/html/*
これで問題が解決した場合は、時間をかけてファイルの所有権と権限をより適切なものに修正してください。
通常、正確な問題を確認するには、まず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コマンドの出力を確認します。
もう1つのケースは、コメントで、ディレクトリ内にファイルがコピーされたとのことです。
403の原因となる構成を持つ.htaccessファイルがある可能性があります。
ドット「。」で始まる名前のファイルUnixでは非表示になっているため、ls -a
。
ここにドキュメント: https://httpd.Apache.org/docs/current/howto/htaccess.html
それらの<Directory>
ディレクティブをコメント化し、DocumentRoot /var/www/html
およびchown -R Apache:apache /var/www/html
を設定して、httpd
を再起動します。
<Directory>
ディレクティブは、ディレクティブのグループを特定のファイルシステムディレクトリに適用する(つまり、権限を変更する)ために使用する必要があるため、通常は<VirtualHost>
で使用します。
私の場合、SE Linuxが有効になっています。
setenforce 0
無効にする(テスト目的のみ)