.htaccess ne fonctionne pas apache

J’ai un serveur du service AWS EC2 exécuté sur Linux Ubuntu et j’ai installé apache, php et mysql.

J’ai ajouté un fichier .htaccess dans mon document root /var/www/html .

J’ai entré ce code dans celui-ci: ErrorDocument 404 /var/www/html/404.php et il ne s’affiche toujours pas.

J’ai gardé cette commande plusieurs fois: sudo service httpd restart pour redémarrer le serveur mais aucune modification affichée …

Comment puis-je résoudre ce problème … Est-ce que j’ai fait quelque chose de mal?

Merci d’avance!

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 ne disposent pas de la racine – c.-à-d., ils n’ont pas access au fichier de configuration du serveur httpd et 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 du serveur principal.

Deuxièmement, si les fichiers .htaccess sont ignorés, vous devez vérifier que AllowOverride est défini correctement. Voir http://httpd.apache.org/docs/2.4/mod/core.html#allowoverride pour plus de détails. Vous devez également vous assurer qu’il est défini dans la scope correcte, c’est-à-dire dans le bloc de droite de votre configuration. Assurez-vous de ne pas éditer celui du bloc, par exemple.

Troisièmement, si vous voulez vous assurer qu’un fichier .htaccess est en train d’être lu, mettez-y des déchets. Une ligne non valide, telle que “INVALID LINE HERE”, dans votre fichier .htaccess, entraînera une erreur de serveur 500 lorsque vous pointez votre navigateur vers le répertoire contenant ce fichier. Si ce n’est pas le cas, alors AllowOverride n’est pas configuré correctement.

  1. Configurez Apache mod_rewrite

    a2enmod rewrite

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

    AllowOverride All

  3. Redémarrer apache

    /etc/init.d/apache2 restart

Si vous avez essayé toutes les réponses ci-dessus, qui sont toutes des réponses valables et correctes, et que votre fichier htaccess ne fonctionne pas ou est en cours de lecture, modifiez la directive dans le fichier apache2.conf . Sous Ubuntu, le chemin est /etc/apache2/apache2.conf

Modifiez la directive indiquant les pages Web publiques où réside le fichier htaccess. Passer de AllowOverride None à AllowOverride All

  Options Indexes FollowSymLinks AllowOverride All Require all granted  

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

Pour Ubuntu,
Tout d’abord, lancez cette commande: –

 sudo a2enmod rewrite 

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

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

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

  AllowOverride All  

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

Probablement, AllowOverride est défini sur Aucun. dans la section Répertoire de apache2.conf située dans le dossier / etc / apache2

Essayez de le configurer sur AllowOverride All

Suivez simplement 3 étapes

  1. Activer mode_rewrite en utilisant la commande suivante

    sudo a2enmod réécrire

Le mot de passe sera demandé. Alors entrez votre mot de passe

  1. Mettez à jour votre fichier 000-default.conf ou default.conf situé dans le répertoire / etc / apache2 / sites-available / . vous ne pouvez pas le modifier directement. utilisez donc la commande suivante pour ouvrir

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

Ou sudo gedit /etc/apache2/sites-available/default.conf

tu auras

DocumentRoot / var / www / html

OU

DocumentRoot / var / www

ligne. Ajoutez le code suivant après.

  Options Indexes FollowSymLinks AllowOverride All Require all granted  

Rendez l’utilisateur le chemin du tag de répertoire identique à celui indiqué dans votre fichier.

  1. Redémarrez votre serveur Apache à l’aide de la commande suivante

    sudo service apache2 redémarrer

Dans mon expérience, la directive / var / www / directory empêche les directives virtualhost du sous-dossier. Donc, si vous avez essayé toutes les suggestions et que vous ne travaillez toujours pas et que vous utilisez virtualhosts, essayez ceci;

1 – Assurez-vous d’avoir la directive AllowOverride All dans /etc/apache2/sites-available/example.com.conf

2 – Vérifiez les directives / var / www / Directory dans /etc/apache2/apache2.conf (éventuellement à la ligne 164), qui ressemble à;

  Options Indexes FollowSymLinks AllowOverride None Require all granted  

S’il existe une directive AllowOverride None changez-la en AllowOverride All ou simplement échappez la ligne

Dans WampServer ouvrez l’icône de la barre WampServer —-> Apache —> Modules Apache —> rewrite_module

utilisez RewriteBase / {votre dossier} / sur votre .htaccess

Par défaut, Apache interdit d’utiliser un fichier .htaccess pour appliquer des règles de réécriture.

Étape 1 – Activation de mod_rewrite (si non activé) Tout d’abord, nous devons activer mod_rewrite. Il est disponible mais pas activé avec une installation Apache 2 propre.

 $ sudo a2enmod rewrite 

Cela activera le module ou vous alertera que le module est déjà activé. Pour appliquer ces modifications, redémarrez Apache.

 $ sudo systemctl restart apache2 

mod_rewrite est maintenant entièrement activé. Dans l’étape suivante, nous allons créer un fichier .htaccess que nous utiliserons pour définir des règles de réécriture pour les redirections.

Étape 2 – Configuration de .htaccess Ouvrez le fichier de configuration par défaut d’Apache à l’aide de nano ou de votre éditeur de texte préféré.

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

Dans ce fichier, vous trouverez un bloc commençant sur la première ligne. Dans ce bloc, ajoutez le nouveau bloc suivant afin que votre fichier de configuration ressemble à ce qui suit. Assurez-vous que tous les blocs sont correctement mis en retrait.

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

   Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted  . . .  

Enregistrez et fermez le fichier. Pour appliquer ces modifications, redémarrez Apache.

 $ sudo systemctl restart apache2 

Terminé. Votre .htacess devrait fonctionner. Ce lien peut réellement aider quelqu’un https://www.digitalocean.com/community/tutorials/how-to-rewrite-urls-with-mod_rewrite-for-apache-on-ubuntu-16-04