2015-10-12 18 views
7

Da un altro answer, questo doppio punto barra è comunePerché double slash dot (es .: \.) In regex htaccess?

RedirectMatch 404 /\\.svn(/|$) 

Dal momento che stiamo corrispondenti "/.svn", ecc, perché non si tratta di una singola barra per sfuggire al periodo?

+0

Secondo [questa pagina di aiuto] (http://httpd.apache.org/docs/2.2/mod/mod_alias.html# redirectmatch) il backslash deve essere single per abbinare un punto letterale. –

+2

Se c'è qualcuno che potrebbe spiegare il [codice sorgente] (http://opensource.apple.com/source/apache/apache-647/apache/src/modules/standard/mod_alias.c), inviterò. –

risposta

1

Qui è consentita la doppia fuga ma non è realmente necessaria. Così entrambe queste regole funzionerà:

RedirectMatch 410 /\\.svn(/|$) 

O

RedirectMatch 410 /\.svn(/|$) 
+0

Perché funziona? Se si vuole far corrispondere letteralmente un file chiamato '\ .svn' il doppio backslash non funziona, ma è necessario usare regex'/\\\. Svn' (3 di essi), mentre il backslash PCRE funziona in modo diverso in mod_rewrite (richiede solo 1, ma 2 corrisponde al file \ .svn). –

+0

Buon punto Jon. Sono passato da questa riga in questione 'Dal momento che stiamo abbinando" /.svn "ecc. Non sono sicuro che il motore regex di 'RedirectMatch' (o' mod_alias') sia uguale a quello usato da 'mod_rewrite' (PCRE). – anubhava

+0

@JonLin Posso capire letteralmente '/ \\\. Svn' matching' \ .svn'. Ho problemi a capire perché '\\. Svn' funziona anche se – hjpotter92

Problemi correlati