Aggiunta di commenti a .htaccess


88

Perché funziona:

RewriteRule (.+)/$ $1

e questo lavoro:

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

ma questo non funziona:

RewriteRule (.+)/$ $1 #bla bla bla

Risposte:


142

I commenti in .htaccess devono essere sulla propria riga , non aggiunti ad altre istruzioni.

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.


7
Consiglia di modificare la risposta per dire qualcosa come "# deve essere all'inizio di una riga". In ogni caso, grazie!
user1032531

@ user1032531 Scusa, è quello che volevo dire
Jon Lin

I commenti possono essere all'interno di un <IfModule>?
Daniel Springer

Questo è qualcosa che ho imparato di nuovo molte volte. Può far perdere ore. Grazie.
Xonatron

1
Anche se #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!
SherylHohman

29

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.