Pourquoi ça marche:
RewriteRule (.+)/$ $1
et ce travail:
RewriteRule (.+)/$ $1 [L] #bla bla bla
mais cela ne fonctionne pas:
RewriteRule (.+)/$ $1 #bla bla bla
Pourquoi ça marche:
RewriteRule (.+)/$ $1
et ce travail:
RewriteRule (.+)/$ $1 [L] #bla bla bla
mais cela ne fonctionne pas:
RewriteRule (.+)/$ $1 #bla bla bla
Réponses:
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 #
).
Les lignes qui commencent par le caractère dièse "#" sont considérées comme des commentaires et sont ignorées. Les commentaires ne peuvent pas être inclus sur une ligne après une directive de configuration. - Manuel officiel Apache 2.4
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.