Ajout de commentaires à .htaccess

88

Pourquoi ça marche:

RewriteRule (.+)/$ $1

et ce travail:

RewriteRule (.+)/$ $1 [L] #bla bla bla

mais cela ne fonctionne pas:

RewriteRule (.+)/$ $1 #bla bla bla
utilisateur1032531
la source

Réponses:

142

Les commentaires dans .htaccess doivent être sur leur propre ligne et non ajoutés à d'autres instructions.

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 blaest interprété comme un 4ème paramètre de la RewriteRuledirective, qui est simplement ignoré.

Dans le dernier cas, le #bla bla blaest interprété comme un 3ème paramètre, qui dans le RewriteRulecas de s est l'endroit où vont les drapeaux, et il #bla bla blane s'agit pas de tous les indicateurs que mod_rewrite comprend donc vous obtenez une erreur.

Jon Lin
la source
7
Recommander de modifier la réponse pour dire quelque chose comme "# doit être au début d'une ligne". Quoi qu'il en soit, merci!
user1032531
@ user1032531 Désolé, c'est ce que je voulais dire
Jon Lin
Les commentaires peuvent-ils être dans un <IfModule>?
Daniel Springer
C'est quelque chose que j'ai réappris à plusieurs reprises. Cela peut perdre des heures. Je vous remercie.
Xonatron
1
Alors qu'il #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!
SherylHohman
29

Le format de fichier de configuration d'Apache (dont les .htaccessfichiers 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_rewritedé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_rewriteignore 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.

IMSoP
la source