155 votes

.htaccess ErrorDocument 404 ne s'affiche pas

J'ai un serveur du service AWS EC2 fonctionnant sur Linux ubuntu et j'ai installé apache, php, et mysql.

J'ai ajouté un .htaccess dans mon document Root /var/www/html .

J'y ai entré ce code : ErrorDocument 404 /var/www/html/404.php et il ne s'affiche toujours pas.

J'ai continué à entrer cette commande plusieurs fois : sudo service httpd restart pour redémarrer le serveur mais aucun changement ne s'affiche...

Comment je peux réparer ça... J'ai fait quelque chose de mal ?

317voto

Rich Bowen Points 816

Tout d'abord, notez que le redémarrage de httpd n'est pas nécessaire pour les fichiers .htaccess. Les fichiers .htaccess sont spécifiquement destinés aux personnes qui n'ont pas Root, c'est-à-dire qui n'ont pas accès au fichier de configuration du serveur httpd et qui ne peuvent pas redémarrer le serveur. Comme vous êtes en mesure de redémarrer le serveur, vous n'avez pas besoin de fichiers .htaccess et pouvez utiliser directement la configuration principale du serveur.

Deuxièmement, si les fichiers .htaccess sont ignorés, vous devez vérifier que AllowOverride est correctement défini. Voir http://httpd.apache.org/docs/2.4/mod/core.html#allowoverride pour les détails. Vous devez également vous assurer qu'il est défini dans la bonne portée, c'est-à-dire dans le bon bloc de votre configuration. Assurez-vous que vous PAS en modifiant celui du bloc, par exemple.

Troisièmement, si vous voulez vous assurer qu'un fichier .htaccess est effectivement lu, mettez-y des déchets. Une ligne invalide, telle que "INVALID LINE HERE", dans votre fichier .htaccess, entraînera une erreur de serveur 500 lorsque vous dirigerez votre navigateur vers le répertoire contenant ce fichier. Si ce n'est pas le cas, c'est que vous n'avez pas configuré AllowOverride correctement.

133voto

  1. Activez le module Apache mod_rewrite

    a2enmod rewrite

  2. ajouter le code suivant à /etc/apache2/sites-available/default

    AllowOverride All

  3. Redémarrer apache

    /etc/init.d/apache2 restart

54voto

user1946891 Points 591

Si vous avez essayé toutes les réponses ci-dessus, qui sont toutes valables et bonnes, et que votre fichier htaccess ne fonctionne pas ou n'est pas lu, modifiez la directive dans le champ apache2.conf fichier. Sous Ubuntu, le chemin est /etc/apache2/apache2.conf

Changez le <Directory> qui pointe vers vos pages Web publiques, où se trouve le fichier htaccess. Passez de AllowOverride None a AllowOverride All

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

J'ai eu le même problème et j'ai trouvé la réponse et l'explication sur le forum Ubuntu Ask ! https://askubuntu.com/questions/421233/enabling-htaccess-file-to-rewrite-path-not-working

24voto

Deval Khandelwal Points 3187

Para Ubuntu,
D'abord, exécutez cette commande :-

sudo a2enmod rewrite

Ensuite, modifiez le fichier /etc/apache2/sites-available/000-default.conf en utilisant nano ou vim en utilisant cette commande :-

sudo nano /etc/apache2/sites-available/000-default.conf

Ensuite, dans le 000-default.conf ajoutez ceci après la ligne DocumentRoot /var/www/html . Si votre répertoire racine html est autre, écrivez-le :-.

<Directory "/var/www/html">
  AllowOverride All
</Directory>

Après avoir fait tout cela, redémarrez apache en utilisant la commande sudo service apache2 restart

6voto

Saurabh Points 1240

Très probablement, AllowOverride est réglé sur None. dans la section Directory de apache2.conf située dans le dossier /etc/apache2

Essayez de le régler sur AllowOverride All

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X