La riscrittura è composta da due parti. Il primo specifica che se il nome file richiesto è un file regolare con una dimensione maggiore di 0 (-s
), un collegamento simbolico (-l
) o una directory (-d
), riscrivi in nessun luogo, ad es. non agire. [NC,L]
significa che la regola non è sensibile al maiuscolo/minuscolo e l'ultima regola che corrispondono a queste condizioni.
Tutte le altre richieste vengono inoltrate a /vote/public/index.php
.
Lo scopo di questa riscrittura è che un file reale esistente può essere prelevato dal server senza interferenze. Senza la prima regola, ogni richiesta di file (file css e js, immagini, ecc.) Andrebbe a index.php
che farebbe un po 'di casino.
Di solito questo è scritto in una dichiarazione, però. Puoi negare le condizioni, e poi i [OR]
statemens può essere eliminata anche:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /vote/public/index.php [NC,L]
Ciò equivale alla dichiarazione originale.
fonte
2010-01-15 20:24:26
@Tatu Ulmanen: puoi spiegare cosa significherebbe "RewriteCond% {REQUEST_FILENAME} -f'? è solo la "dimensione" in cui le opzioni '-s' e' -f' differiscono? E anche quali sarebbero i file normali (non binari?)? –