.htaccess ne fonctionne pas apache
j'ai un serveur de AWS EC2 service tournant 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'y ai entré ce code:
ErrorDocument 404 /var/www/html/404.php
et il n'apparaît toujours pas.
j'ai gardé cette commande Entrée plusieurs fois: sudo service httpd restart
pour redémarrer le serveur mais aucune modification affichée...
Comment puis-je fixer ce... Ai-je fais quelque chose de mal?
Merci d'avance!
10 réponses
tout d'abord, Notez qu'il n'est pas nécessaire de redémarrer httpd .fichiers htaccess. .les fichiers htaccess sont spécifiquement destinés aux personnes qui n'ont pas root - ie, qui n'ont pas accès au fichier de configuration du serveur httpd et qui ne peuvent pas redémarrer le serveur. Comme vous pouvez redémarrer le serveur, vous n'avez pas besoin .htaccess et peut utiliser directement la configuration du serveur principal.
deuxièmement, si .les fichiers htaccess sont ignorés, vous devez vérifier pour voir 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 bonne portée - c'est à dire, dans le bloc de droite dans votre configuration. Assurez-vous que vous êtes et non éditant celui du bloc, par exemple.
troisièmement, si vous voulez vous assurer que A.le fichier htaccess est en fait en train d'être lu, il contient des déchets. Une ligne invalide, comme "ligne invalide ici", dans votre .fichier htaccess, entraînera dans une erreur de serveur 500 lorsque vous pointez votre navigateur vers le répertoire contenant ce fichier. Si ce n'est pas le cas, vous n'avez pas AllowOverride configuré correctement.
-
Activer le module Apache mod_rewrite
a2enmod rewrite
-
ajouter 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 valides et bonnes, et que votre fichier htaccess ne fonctionne pas ou ne soit pas lu, changez la directive dans le fichier apache2.conf
. Sous Ubuntu le chemin est /etc/apache2/apache2.conf
changer la directive <Directory>
pointant vers vos pages Web publiques, où le fichier htaccess réside. Passage de AllowOverride None
à AllowOverride All
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
j'ai eu le même problème et trouvé la réponse et explication sur la demande Ubuntu! forum https://askubuntu.com/questions/421233/enabling-htaccess-file-to-rewrite-path-not-working
Pour Ubuntu,
Tout d'abord, exécutez cette commande :-
sudo a2enmod rewrite
ensuite, éditez 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
puis dans le fichier 000-default.conf
, ajoutez ceci après la ligne DocumentRoot /var/www/html
. Si votre répertoire html racine est quelque chose d'autre, alors écrivez que: -
<Directory "/var/www/html">
AllowOverride All
</Directory>
après avoir tout fait, redémarrez apache en utilisant le commande sudo service apache2 restart
très probablement, AllowOverride est défini à None. dans la section répertoire d'apache2.conf situé dans le dossier/etc / apache2
essayez de le paramétrer pour AllowOverride All
il suffit de suivre 3 étapes
-
activer mode_rewrite en utilisant la commande suivante
sudo a2enmod rewrite
Le mot de passe
sera demandé. Alors entrez votre mot de passe
-
mise à Jour de votre 000-default.conf ou par défaut.conf fichier situé à /etc/apache2/ sites-available / directory. vous ne pouvez pas 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
, vous obtiendrez
DocumentRoot /var/www / html
ou
DocumentRoot / var /www
de ligne. Ajouter le code suivant après.
<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Make user le chemin de l'étiquette de répertoire est le même que celui affiché dans votre fichier.
-
redémarrez votre serveur apache en utilisant la commande suivante
sudo service apache2 restart
d'après mon expérience, la directive /var/www/ directory empêche les directives virtualhost des sous-dossiers. Donc, si vous avez essayé toutes les suggestions et ne fonctionnez toujours pas et que vous utilisez des hébergeurs virtuels, essayez ceci;
1 - assurez-vous que vous avez
AllowOverride All
directive
/etc/apache2/sites-available/example.com.conf
2 - Vérifier /var/www/ Répertoire des directives dans /etc/apache2/apache2.conf
(peut-être à la ligne 164), qui ressemble à ;
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
S'il y a un AllowOverride None
modifier la directive pour
AllowOverride All
ou tout simplement échapper à la ligne
Dans WampServer
Ouvrir WampServer icône de la barre ----> Apache ---> Modules Apache --->rewrite_module
utilisez RewriteBase / {votre dossier} / sur votre .htaccess
par défaut, Apache interdit l'utilisation d'an .fichier htaccess pour appliquer les règles de réécriture, de sorte que
Étape 1 - Activation de la mod_rewrite (si Activé) Tout d'abord, nous devons activer le mod_rewrite. Il est disponible mais non activé avec une installation Apache 2 propre.
$ sudo a2enmod rewrite
ceci activera le module ou vous avertira que le module est déjà activé. Pour mettre ces modifications en vigueur, redémarrez Apache.
$ sudo systemctl restart apache2
mod_rewrite est maintenant entièrement activé. Dans la prochaine étape, nous allons créer un .fichier htaccess que nous utiliserons pour définir les règles de réécriture des redirections.
Etape 2 - Mise En Place .htaccess Ouvrez le fichier de configuration Apache par défaut en utilisant nano ou 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. À l'intérieur de ce bloc, ajoutez le nouveau bloc suivant pour que votre fichier de configuration ressemble à la suivante. Assurez-vous que tous les blocs sont correctement indentés.
/etc/apache2/sites-available / 000-default.conf
<VirtualHost *:80>
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
. . .
</VirtualHost>
Enregistrer et fermer le fichier. Pour mettre ces modifications en vigueur, redémarrez Apache.
$ sudo systemctl restart apache2
fait. Votre. htacess devrait marcher. 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