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.
Configurez Apache mod_rewrite
a2enmod rewrite
Ajoutez le code suivant à /etc/apache2/sites-available/default
AllowOverride All
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
Activer mode_rewrite en utilisant la commande suivante
sudo a2enmod réécrire
Le mot de passe sera demandé. Alors entrez votre mot de passe
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.
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