web-dev-qa-db-fra.com

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

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

92
Jesse Hattabaugh

Un redémarrage est pas requis pour les modifications de .htaccess. Quelque chose d'autre ne va pas.

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

RewriteEngine sur

ce qui est requis 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 error_log - il vous informera de toute erreur dans .htaccess si 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 correspondant et comment elles ont été gérées.

87
TomG

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 tout nom peut être spécifié dans la directive AccessFileName ... Étant donné que les fichiers .htaccess sont lus à chaque demande, les modifications apportées dans ces fichiers prennent effet immédiatement ...

51
Milen A. Radev

De 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 sont respectées. Assurez-vous que vous n'avez pas de AllowOverride None en vigueur pour la portée du fichier en question. Un bon test pour cela est de mettre les ordures dans votre fichier .htaccess et de recharger. Si aucune erreur de serveur n'est générée, vous avez presque certainement AllowOverride None en vigueur.

18
PiedPiper

Seulement si vous avez pas ajouté le module mod_rewrite à Apache.

Vous ne devez redémarrer Apache que si vous modifiez des fichiers Apache ".conf".

3
ethyreal

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

  • AllowOverride Peut ne pas être défini quel utilisateur peut définir à l'intérieur de httpd.conf ou pourrait avoir à contacter l'administrateur du serveur.

  • Vérifiez le nom du fichier .htaccess. Il doit être .htaccess et non htaccess.txt voir ici pour savoir comment en créer un.

  • Essayez d'utiliser Options -Indexes ou deny all sorte de directive simple pour voir si cela fonctionne ou non.

  • effacer 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.

2
Abhishek Gurjar

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

2
user825302

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

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

0
ceejayoz