J'ai deux problèmes principaux avec mod_rewrite:
1) Il n'y a pas d'erreur significative signalée quand j'ai une règle invalide
2) Pour tester chaque modification de manière fiable, je dois effacer le cache de chrome. Ce n'est pas sorcier, mais je dois appuyer sur Ctrl + Maj + Suppr, puis cliquer sur OK, puis fermer la fenêtre et recharger.
J'aimerais savoir si certains gourous sont disposés à partager leurs secrets pour gérer efficacement le code mod_rewrite.
Une astuce consiste à activer le journal de réécriture. Pour l'activer, essayez ces lignes dans votre configuration principale Apache ou dans votre fichier d'hôte virtuel actuel ( et non dans .htaccess
):
RewriteEngine On
RewriteLog "/var/log/Apache2/rewrite.log"
RewriteLogLevel 3
Depuis Apache httpd 2.4 mod_rewrite Les directives RewriteLog et RewriteLogLevel ont été complètement remplacées par la nouvelle configuration de journalisation par module.
LogLevel alert rewrite:trace6
La directive LogRewrite mentionnée par Ben n’est plus disponible dans Apache 2.4. Vous devez plutôt utiliser la directive LogLevel. Par exemple.
LogLevel alert rewrite:trace6
Voir http://httpd.Apache.org/docs/2.4/mod/mod_rewrite.html#logging
Pour une résolution d'URL de base, utilisez un outil de récupération de ligne de commande tel que wget
ou curl
pour effectuer le test, plutôt qu'un navigateur manuel. Ensuite, vous ne devez effacer aucune mémoire cache; Il suffit de lever la flèche et entrez dans un shell pour réexécuter vos résultats de test.
Il y a le testeur htaccess .
Il montre quelles conditions ont été testées pour une certaine URL, lesquelles remplissaient les critères et quelles règles étaient exécutées.
Il semble y avoir quelques problèmes, cependant.
Sur la base de réponse de Ben , vous pouvez effectuer les opérations suivantes lors de l'exécution d'Apache sous Linux (Debian dans mon cas).
Commencez par créer le fichier rewrite-log.load
/etc/Apache2/mods-disponible/rewrite-log.load
RewriteLog "/var/log/Apache2/rewrite.log"
RewriteLogLevel 3
Puis entrez
$ a2enmod rewrite-log
suivi par
$ service Apache2 redémarrer
Et quand vous avez fini de déboguer vos règles de réécriture
$ a2dismod rewrite-log && service Apache2 restart