Comment déboguer.htaccess RewriteRule ne fonctionne pas
j'ai un RewriteRule
dans un fichier .htaccess
qui ne fait rien. Comment puis-je résoudre ce problème?
- Comment puis-je vérifier si le fichier
.htaccess
est lu et obéi par Apache? Puis-je écrire un message echo "ça marche", si je l'écris, où cette ligne sera-t-elle reprise? - si le fichier
.htaccess
n'est pas utilisé, Comment puis-je faire en sorte Qu'Apache l'utilise? - Si le
.htaccess
est utilisé mais monRewriteRule
n'a toujours pas d'effet, que puis-je faire de plus pour déboguer?
7 réponses
Inscrivez une valeur approximative dans votre .htaccess
par exemple foo bar
, sakjnaskljdnas
tout mot-clé non reconnu par htaccess
et visitez votre URL. Si cela fonctionne, vous devriez obtenir un
500 Erreur De Serveur Interne
Erreur Interne Du Serveur
le serveur a rencontré une erreur interne ou une mauvaise configuration et n'a pas été en mesure de répondre à votre demande....
je vous suggère de le mettre peu après RewriteEngine on
.
puisque vous êtes sur votre machine. Je suppose que vous avez accès au fichier apache .conf
.
ouvrir le fichier .conf
, et chercher une ligne similaire à:
LoadModule rewrite_module modules/mod_rewrite.so
si elle est commentée(#), décommentez et redémarrez apache.
journal de réécriture
RewriteEngine On
RewriteLog "/path/to/rewrite.log"
RewriteLogLevel 9
mettez les 3 lignes ci-dessus dans votre virtualhost
. redémarrez le httpd.
RewriteLogLevel 9
L'utilisation d'une valeur élevée pour Level ralentira considérablement votre serveur Apache! Utilisez le logfile de réécriture à un niveau supérieur à 2 uniquement pour le débogage!
Le niveau 9 enregistrera presque tous les détails de la réécriture.
mise à JOUR
les choses ont changé dans Apache 2.4:
de Passage de 2,2 à 2,4
"les directives RewriteLog et RewriteLogLevel ont été supprimées. Cette fonctionnalité est maintenant fournie en configurant le niveau approprié de journalisation pour le module mod_rewrite à l'aide de la directive LogLevel . Voir aussi la section logging mod_rewrite.
pour plus sur LogLevel, se référer LogLevel Directive
vous pouvez accomplir
RewriteLog "/path/to/rewrite.log"
de cette manière maintenant
LogLevel debug rewrite_module:debug
la réponse "entrer une valeur de camelote" n'a pas fait l'affaire pour moi, mon site continuait à charger malgré la camelote entrée.
à la place j'ai ajouté la ligne suivante en haut de la .fichier htaccess:
deny from all
cela vous fera vite savoir si .htaccess est ramassé ou pas. Si l' .htaccess est utilisé, les fichiers de ce dossier ne se charge pas du tout.
en général, tout changement dans le .htaccess doit avoir des effets visibles. Si aucun effet, vérifiez votre fichier de configuration apache, quelque chose comme:
<Directory ..>
...
AllowOverride None
...
</Directory>
doit être remplacé par
AllowOverride All
et vous pourrez changer les directives .fichiers htaccess.
peut-être plus logique serait de créer un fichier (par exemple, test.html), ajouter du contenu et essayer de le Définir comme la page d'index:
DirectoryIndex test.html
Pour la plupart, l' .la règle htaccess annulera la configuration D'Apache lorsque vous travaillez au niveau du répertoire / fichier
si vous avez accès au répertoire bin apache, vous pouvez utiliser,
httpd -M
vérifier d'abord les modules chargés.
info_module (shared) isapi_module (shared) log_config_module (shared) cache_disk_module (shared) mime_module (shared) negotiation_module (shared) proxy_module (shared) proxy_ajp_module (shared) rewrite_module (shared) setenvif_module (shared) socache_shmcb_module (shared) ssl_module (shared) status_module (shared) version_module (shared) php5_module (shared)
après que des directives simples comme Options -Indexes
ou deny from all
vont solidifier cela .htaccess fonctionne correctement.
pour tester vos règles de réécriture de htaccess, remplissez simplement l'url à laquelle vous appliquez les règles, placez le contenu de votre htaccess sur la zone d'entrée plus grande et appuyez sur le bouton" Test".
pourquoi ne pas mettre de la camelote dans votre .htaccess file et essayer de recharger apache. Si apache ne démarre pas, vous savez que cela fonctionne. Retirez la camelote puis rechargez apache s'il charge des congrats que vous avez configurés .htaccess correctement.