Pourquoi ça marche:
RewriteRule (.+)/$ $1
et ce travail:
RewriteRule (.+)/$ $1 [L] #bla bla bla
mais cela ne fonctionne pas:
RewriteRule (.+)/$ $1 #bla bla bla
La dernière règle ne fonctionne pas car les commentaires ne sont pas vraiment des commentaires. Les commentaires dans htaccess doivent commencer par un #
(doit être au début d'une ligne), et pas arbitrairement n'importe où.
Dans le second cas, le #bla bla bla
est interprété comme un 4ème paramètre de la RewriteRule
directive, qui est simplement ignoré.
Dans le dernier cas, le #bla bla bla
est interprété comme un 3ème paramètre, qui dans le RewriteRule
cas de s est l'endroit où vont les drapeaux, et il #bla bla bla
ne s'agit pas de tous les indicateurs que mod_rewrite comprend donc vous obtenez une erreur.
#
doit être au "début" de la ligne, il peut être précédé de n'importe quelle quantité d'espaces blancs. (Excès) Les espaces dans .htaccess sont ignorés et peuvent être "saupoudrés" n'importe où, y compris au début des lignes. En d'autres termes,#
doit être le premier caractère non blanc sur une ligne. Je pensais à tort que#
devait être le caractère 1, dans la colonne la plus à gauche!Le format de fichier de configuration d'Apache (dont les
.htaccess
fichiers sont un exemple) ne supporte pas techniquement les commentaires en ligne, seulement les commentaires en ligne complète (c'est-à-dire une ligne commençant par a#
).Cependant, il est déroutant que chaque module analyse l'entrée de ses directives comme il le souhaite -
mod_rewrite
décide donc de ce qu'il faut faire avec toute ligne commençant parRewriteRule
Je ne sais pas avec certitude, mais je suppose que cela
mod_rewrite
ignore tout après le[flags]
, et ce#
n'est pas du tout nécessaire.Le meilleur pari, cependant, est de toujours garder les commentaires sur leur propre ligne, car cela fonctionnera quelle que soit la directive que vous commentez.
la source