Pourquoi ça marche:
RewriteRule (.+)/$ $1
et ce travail:
RewriteRule (.+)/$ $1 [L] #bla bla bla
mais ça ne marche pas:
RewriteRule (.+)/$ $1 #bla bla bla
La dernière règle ne fonctionne pas car les commentaires ne sont pas vraiment des commentaires. Commentaires en htaccess doit commencer avec un #
_ (doit être au début d'une ligne), et pas n'importe où arbitrairement.
Dans le second cas, le #bla bla bla
est interprété comme un 4ème paramètre de la directive RewriteRule
, qui est simplement ignoré.
Dans le dernier cas, le #bla bla bla
est interprété comme un 3ème paramètre qui, dans le cas de RewriteRule
, est l'endroit où les drapeaux vont et #bla bla bla
n'est pas un indicateur que mod_rewrite comprend, donc vous obtenez une erreur.
Le format de fichier de configuration d’Apache (dont les fichiers .htaccess
En sont un exemple) ne prend pas techniquement en charge les commentaires en ligne, mais uniquement les commentaires de la ligne complète (c.-à-d. Une ligne commençant avec un #
).
Les lignes commençant par le caractère de hachage "#" 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 puisse analyser l'entrée de ses directives comme bon lui semble - donc mod_rewrite
Décide quoi faire avec une ligne commençant par RewriteRule
Je ne sais pas avec certitude, mais je suppose que mod_rewrite
Ignore tout après le [flags]
, Et le #
N'est pas du tout nécessaire.
Le mieux est toutefois de toujours garder les commentaires sur leur propre ligne, car cela fonctionnera quelle que soit la directive que vous commentez.