Je pense que c'est un correctif assez simple et j'ai vu des problèmes similaires lors de la recherche, mais je n'ai pas pu le résoudre avec ces solutions. Fondamentalement, le problème est que je ne peux accéder à aucun sous-répertoire de mon serveur Web. Aller à localhost affiche l'amende de l'index. Mais aller à localhost/test donne une erreur interdite 403.
J'utilise CentOS. J'ai essayé d'éditer le fichier /etc/httpd/conf/httpd.conf de plusieurs manières mais je n'ai pas eu de chance. Le DocumentRoot se trouve dans/var/www/html. Actuellement, j'ai:
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
J'ai essayé d'ajouter ce qui suit:
<Directory "/var/www/html/test">
Order allow,deny
Allow from all
</Directory>
Mais cela me donne toujours l'erreur interdite 403.
Vous ne devriez pas avoir besoin d'autoriser spécifiquement l'accès à un répertoire en dessous de celui qui est déjà configuré dans httpd.conf
Étant donné que/var/www/html est configuré avec "AllowOverride None", le problème n'est pas dû à un fichier .htaccess modifiant les droits d'accès.
La seule raison qui reste est que les autorisations sur les fichiers et répertoires ne permettent pas à l'uid du serveur Web de lire à partir de ce répertoire. Ce qu'ils sont et ce qu'ils devraient être dépend de votre modèle de sécurité. Mais comme solution rapide, vous pouvez essayer:
# chmod a+rx /var/www/html/test
# chmod a+r /var/www/html/*
Si cela résout le problème, veuillez prendre le temps de fixer la propriété et les autorisations des fichiers à quelque chose de plus approprié.
Habituellement, je recommande de jeter d'abord un œil à http error_log pour voir le problème exact.
Avec la configuration par défaut, vous devriez pouvoir accéder au répertoire 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>
Si vous ne pouvez toujours pas accéder au répertoire, tout indique des autorisations de répertoire, dans ce cas, je suggère d'essayer:
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
Sur un terminal distinct, exécutez les commandes suivantes:
apachectl configtest && apachectl restart
tail -f /etc/httpd/logs/error_log # Assuming default error_log location
Essayez d'ajouter un simple fichier html comme (example.html):
<html>
<head><body>It works!</body></head>
</html>
Enfin, rechargez la page, essayez de charger example.html et jetez un œil à la sortie de la commande tail.
Un autre cas, dans les commentaires, il est mentionné que le répertoire a été copié avec des fichiers qu'il contient.
Il pourrait y avoir un fichier .htaccess avec la configuration provoquant le 403.
Fichiers dont le nom commence par un point "." sont cachés dans Unix, pour leur montrer utiliser ls -a
.
Documentation ici: https://httpd.Apache.org/docs/current/howto/htaccess.html
Commentez ces <Directory>
directives et définissez simplement DocumentRoot /var/www/html
et chown -R Apache:apache /var/www/html
et redémarrez httpd
.
Le <Directory>
la directive doit être utilisée pour appliquer un groupe de directives à un répertoire spécifique du système de fichiers (c'est-à-dire changer les autorisations), donc vous voulez généralement l'utiliser dans un <VirtualHost>
.
SE Linux a été activé dans mon cas.
setenforce 0
pour le désactiver (à des fins de test uniquement)