.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!

107
demandé sur Greg Dubicki 2012-08-30 21:33:03
la source

10 ответов

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.

232
répondu Rich Bowen 2012-08-30 23:01:10
la source
  1. Activer 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

91
répondu Sijo Thomas Maprayil 2018-08-16 17:04:19
la source

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

35
répondu user1946891 2017-04-13 15:22:42
la source

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

15
répondu khandelwaldeval 2016-04-20 14:15:21
la source

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

5
répondu KawaiKx 2016-10-03 08:57:43
la source

il suffit de suivre 3 étapes

  1. activer mode_rewrite en utilisant la commande suivante

    sudo a2enmod rewrite

  2. Le mot de passe

sera demandé. Alors entrez votre mot de passe

  1. 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.

  1. redémarrez votre serveur apache en utilisant la commande suivante

    sudo service apache2 restart

4
répondu Rameshwer Dhanora 2017-07-16 13:31:15
la source

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

2
répondu Erdinç Çorbacı 2018-03-05 16:27:35
la source

Dans WampServer Ouvrir WampServer icône de la barre ----> Apache ---> Modules Apache --->rewrite_module

1
répondu Burusothman 2015-05-27 14:14:08
la source

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

0
répondu miftah al rasyid 2015-11-19 18:27:43
la source

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

-1
répondu Abayomi Israel 2018-08-04 22:44:13
la source