J'ai un serveur du service AWS EC2 fonctionnant sous Linux ubuntu et j'ai installé apache, php et mysql.
J'ai ajouté un .htaccess
fichier à la racine de mon document /var/www/html
.
J'y ai entré ce code:
ErrorDocument 404 /var/www/html/404.php
et il n'apparaît toujours pas.
J'ai gardé entré cette commande plusieurs fois: sudo service httpd restart
pour redémarrer le serveur mais aucun changement n'est affiché ...
Comment puis-je résoudre ce problème ... Ai-je fait quelque chose de mal?
Merci d'avance!
apache
.htaccess
amazon-ec2
amazon-web-services
apache-config
Shalin Shah
la source
la source
400 Bad Request
erreur à/var/www/html/404.php
?Réponses:
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 de racine, c'est-à-dire qui n'ont pas accès au fichier de configuration du serveur httpd et ne peuvent pas redémarrer le serveur. Comme vous pouvez 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 correctement défini. 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 bonne portée, c'est-à-dire dans le bon bloc de votre configuration. Assurez-vous de NE PAS modifier celui du bloc, par exemple.
Troisièmement, si vous voulez vous assurer qu'un fichier .htaccess est bien 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, cela signifie que AllowOverride n'est pas configuré correctement.
la source
"A STRING"
dans mon .htaccess, donc je recevrais une erreur, alors j'ai mis leAllowOverride All
toutapache2.conf
dans mon Debian et ça marcheAllowOverride
ne fonctionne que dans les<Directory>
directives et sera ignoré s'il est placé dans une<Location ...>
section, voir: httpd.apache.org/docs/2.4/mod/core.html#allowoverride<Directory>
directive attend un chemin absolu au lieu de relatif. Dans mon cas, a<Directory />
échoué tout en<Directory /var/www/html/subdir>
travaillant.Activer le module Apache mod_rewrite
a2enmod rewrite
ajoutez le code suivant à
/etc/apache2/sites-available/default
AllowOverride All
Redémarrez Apache
/etc/init.d/apache2 restart
la source
Si vous avez essayé tout ce qui précède, qui sont toutes des réponses valides et bonnes, et que votre fichier htaccess ne fonctionne pas ou est en cours de lecture, modifiez la directive dans le
apache2.conf
fichier. Sous Ubuntu, le chemin est/etc/apache2/apache2.conf
Modifiez la
<Directory>
directive pointant vers vos pages Web publiques, où réside le fichier htaccess. Changer deAllowOverride None
àAllowOverride All
J'ai eu le même problème et j'ai trouvé la réponse et l'explication sur Ubuntu Ask! forum /ubuntu/421233/enabling-htaccess-file-to-rewrite-path-not-working
la source
AllowOverride FileInfo
troisième ligne est requise pour que le.htaccess
fichier soit lu et utilisé.All
permet également des remplacements de configuration supplémentaires, tels que.httpasswd
(qui peut être activé individuellement en utilisantAuthconfig
au lieu deAll
).Pour Ubuntu,
exécutez d'abord cette commande: -
Ensuite, éditez le fichier en
/etc/apache2/sites-available/000-default.conf
utilisant nano ou vim en utilisant cette commande: -Ensuite, dans le
000-default.conf
fichier, ajoutez ceci après la ligneDocumentRoot /var/www/html
. Si votre répertoire racine html est autre chose, écrivez-le: -Après avoir tout fait, redémarrez apache en utilisant la commande
sudo service apache2 restart
la source
Suivez simplement 3 étapes
Activez mode_rewrite à l'aide de la commande suivante
réécriture sudo a2enmod
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. alors utilisez 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
OU
ligne. Ajoutez le code suivant après.
Faites en sorte que le chemin de la balise de répertoire soit le même que celui indiqué dans votre fichier.
Redémarrez votre serveur Apache en utilisant la commande suivante
redémarrage du service sudo apache2
la source
Très 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 définir sur AllowOverride All
la source
D'après mon expérience, la directive / var / www / directory empêche les directives virtualhost de sous-dossier. Donc, si vous avez essayé toutes les suggestions et que vous ne travaillez toujours pas et que vous utilisez des hôtes virtuels, essayez ceci;
1 - Assurez-vous d'avoir une
AllowOverride All
directive/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 à;S'il y a une
AllowOverride None
directive, changez-la enAllowOverride All
ou simplement en ligne d'échappementla source
Par défaut, Apache interdit l'utilisation d'un fichier .htaccess pour appliquer des règles de réécriture, donc
Étape 1 - Activation de mod_rewrite (s'il n'est pas activé) Tout d'abord, nous devons activer mod_rewrite. Il est disponible mais pas activé avec une installation Apache 2 propre.
Cela activera le module ou vous avertira que le module est déjà activé. Pour appliquer ces modifications, redémarrez Apache.
mod_rewrite est maintenant entièrement activé. Dans la prochaine étape, nous allons configurer un fichier .htaccess que nous utiliserons pour définir les règles de réécriture pour les redirections.
Étape 2 - Configuration de .htaccess Ouvrez le fichier de configuration Apache par défaut à l'aide de nano ou de votre éditeur de texte préféré.
Dans ce fichier, vous trouverez un bloc commençant sur la première ligne. À l'intérieur de ce bloc, ajoutez le nouveau bloc suivant pour que votre fichier de configuration ressemble à ce qui suit. Assurez-vous que tous les blocs sont correctement indentés.
/etc/apache2/sites-available/000-default.conf
Enregistrez et fermez le fichier. Pour appliquer ces modifications, redémarrez Apache.
Terminé. Votre .htacess devrait fonctionner. Ce lien peut en fait aider quelqu'un https://www.digitalocean.com/community/tutorials/how-to-rewrite-urls-with-mod_rewrite-for-apache-on-ubuntu-16-04
la source
$ sudo httpd -k restart
(Red Hat 4.4.7-23)J'ai autorisé cette utilisation. En utilisant ce site, cliquez ici , suivez les étapes, les mêmes étapes suivent jusqu'à la version 18.04 d'ubuntu
la source
Dans l'
WampServer
icône Open WampServer Tray ----> Apache ---> Apache Modules ---> rewrite_modulela source
utilisez RewriteBase / {votre dossier} / sur votre .htaccess
la source
Par souci d'exhaustivité, si "AllowOverride All" ne résout pas votre problème, vous pouvez le déboguer en utilisant:
Exécutez
apachectl -S
et voyez si vous avez plus d'un nom d'hôte. Il se peut que httpd recherche .htaccess d'un autre DocumentRoot.Utilisez
strace -f apachectl -X
et recherchez où il charge (ou ne charge pas) .htaccess.la source