Perché funziona:
RewriteRule (.+)/$ $1
e questo lavoro:
RewriteRule (.+)/$ $1 [L] #bla bla bla
ma questo non funziona:
RewriteRule (.+)/$ $1 #bla bla bla
Perché funziona:
RewriteRule (.+)/$ $1
e questo lavoro:
RewriteRule (.+)/$ $1 [L] #bla bla bla
ma questo non funziona:
RewriteRule (.+)/$ $1 #bla bla bla
Risposte:
L'ultima regola non funziona perché i commenti non sono realmente commenti. I commenti in htaccess devono iniziare con #(deve essere all'inizio di una riga) e non arbitrariamente da nessuna parte.
Nel secondo caso, #bla bla blaviene interpretato come un quarto parametro della RewriteRuledirettiva, che viene semplicemente ignorato.
Nell'ultimo caso, #bla bla blaviene interpretato come un terzo parametro, che nel RewriteRulecaso di è dove vanno i flag, e #bla bla blanon è un flag che mod_rewrite capisce, quindi ottieni un errore.
#deve essere "all'inizio" della riga, può essere preceduto da qualsiasi quantità di spazio bianco. Gli spazi (in eccesso) in .htaccess vengono ignorati e possono essere "spruzzati" ovunque, anche all'inizio delle righe. In altre parole, #deve essere il primo carattere non di spaziatura su una riga. Pensavo erroneamente che #dovesse essere il carattere 1, nella colonna più a sinistra!
Il formato del file di configurazione di Apache (di cui i .htaccessfile sono un esempio) non supporta tecnicamente i commenti in linea, solo i commenti a riga intera (cioè una riga che inizia con a #).
Le righe che iniziano con il carattere cancelletto "#" sono considerate commenti e vengono ignorate. I commenti potrebbero non essere inclusi su una riga dopo una direttiva di configurazione. - Manuale ufficiale di Apache 2.4
In modo confuso, tuttavia, ogni modulo può analizzare l'input per le sue direttive come preferisce, quindi mod_rewritedecide cosa fare con qualsiasi riga che inizia conRewriteRule
Non lo so per certo, ma la mia ipotesi è che mod_rewriteignori tutto dopo il [flags], e in #realtà non è affatto necessario.
La cosa migliore, tuttavia, è mantenere i commenti sempre sulla propria riga, poiché funzionerà indipendentemente dalla direttiva che stai commentando.