Devez-vous redémarrer Apache pour que les règles de réécriture dans le .htaccess prennent effet?

99

J'ai poussé mes fichiers .htaccess vers les serveurs de production, mais ils ne fonctionnent pas. Est-ce qu'un redémarrage serait la prochaine étape ou devrais-je vérifier autre chose.

Jesse Hattabaugh
la source

Réponses:

94

Un redémarrage n'est pas nécessaire pour les modifications apportées à .htaccess. Quelque chose ne va pas.

Assurez-vous que votre .htaccess inclut la déclaration

RewriteEngine sur

qui est obligatoire même s'il est également présent dans httpd.conf. Vérifiez également que .htaccess est lisible par le processus httpd.
Vérifiez le journal des erreurs - il vous informera de toute erreur dans .htaccess s'il est utilisé. Mettre une erreur de syntaxe intentionnelle dans .htaccess est une bonne vérification pour vous assurer que le fichier est utilisé - vous devriez obtenir une erreur 500 sur n'importe quelle page du même répertoire.

Enfin, vous pouvez activer un journal de réécriture à l'aide de commandes telles que les suivantes dans votre httpd.conf:

RewriteLog "logs / rewritelog"

RewriteLogLevel 7

Le fichier journal ainsi généré vous donnera le détail sanglant des règles de réécriture correspondantes et comment elles ont été traitées.

TomG
la source
3
C'est un peu désuet. J'ai rencontré un problème similaire et je voulais déboguer mes réécritures pour un cas d'utilisation particulier. J'ai essayé cette méthode, mais après un peu de frustration et de fouilles, j'ai compris quel était le problème. Ceci est pour les anciennes versions d'apache. Pour apache2.4> remplacer le RewriteLog & LogLevel ci - dessus: LogLevel alert rewrite:trace7. Après avoir redémarré Apache , vous devriez voir les traces dans le error.log J'espère que cela aide. http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging
Casper Wilkes
52

Non :

Apache permet une gestion décentralisée de la configuration via des fichiers spéciaux placés dans l'arborescence Web. Les fichiers spéciaux sont généralement appelés .htaccess, mais n'importe quel nom peut être spécifié dans la directive AccessFileName ... Puisque les fichiers .htaccess sont lus à chaque demande, les modifications apportées à ces fichiers prennent effet immédiatement ...

Milen A. Radev
la source
Si vous avez ajouté le nom d'utilisateur à "Exiger l'utilisateur" dans votre fichier activé pour les sites, j'ai trouvé empiriquement que vous avez besoin d'un redémarrage. Un gracieux le fait.
Ross
18

D'après la documentation Apache: Le plus souvent, le problème est que AllowOverride n'est pas défini de telle sorte que vos directives de configuration soient respectées. Assurez-vous que vous n'avez pas de AllowOverride None en vigueur pour la portée de fichier en question. Un bon test pour cela est de mettre des déchets dans votre fichier .htaccess et de le recharger. Si une erreur de serveur n'est pas générée, alors vous avez presque certainement AllowOverride None en vigueur.

PiedPiper
la source
1
Suppression du lien vers Apache - AllowOverride: httpd.apache.org/docs/2.2/mod/core.html#AllowOverride
scunliffe
2
J'ajoute cette ligne "<répertoire /> </directory>" à mon .htaccess pour générer une erreur dans le journal. Il dira "<Répertoire non autorisé ici" et je sais qu'il lit mon fichier.
Mnebuerquo
3

Uniquement si vous n'avez pas ajouté le module mod_rewrite à Apache.

Vous n'avez besoin de redémarrer Apache que si vous modifiez des fichiers Apache ".conf".

éthyre
la source
2

J'ai le même problème et il semble que l'article de PiedPiper sur AllowOverride ait été très utile. Vérifiez votre fichier httpd.conf pour "AllowOverride" et assurez-vous qu'il est défini sur Tous.

Dave Ip
la source
1
Article pertinent: Comment définir AllowOverride all
Zach Saucier
2

En cas de .htaccess, le redémarrage n'est pas nécessaire s'il ne fonctionne pas, les raisons probables incluent.

  • AllowOverride Peut ne pas être défini quel utilisateur peut définir dans httpd.conf ou doit contacter l'administrateur du serveur.

  • Vérifiez le nom de fichier de .htaccess, il devrait être .htaccess et non htaccess.txt.Voyez ici pour savoir comment en créer un.

  • Essayez d'utiliser Options -Indexesou une deny allsorte de directive simple pour voir si cela fonctionne ou non.

  • effacez le cache du navigateur à chaque fois si vous avez une règle pour les redirections ou similaire si la redirection précédente est mise en cache, il semble que les choses ne fonctionnent pas.

Abhishek Gurjar
la source
0

Que contient votre .htaccess? RewriteRules? Vérifiez que mod_rewrite est installé et activé.

D'autres choses? Essayez de définir AllowOverride sur «tous» sur ce répertoire.

ceejayoz
la source