2010-01-15 8 views
7

Im installazione phpancake, c'è una cartella ci shema come questoChe cosa significa questa regola di riscrittura?

application/ 
install/ 
library/ 
public/ 
sql_schema/ 
install.html 
install.php 

Che cosa significa questa regola?

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ /vote/public/index.php [NC,L] 

risposta

11

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.

+0

@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?)? –

0

Quelli sono riscritture principalmente standard che controllano se il file richiesto (o una directory o un link simbolico) è presente sul disco, nel qual caso il file/directory/etc. dovrebbe essere usato.

Tutte le altre partite dovrebbero andare a /votes/public/index.php

+0

da @Tatu La risposta di 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?)? –

0

La prima regola passerà attraverso tutte le richieste che possono essere associati a un file regolare con una dimensione maggiore di zero (-s), una simbolica link (-l) o una directory (-d). Ogni altra richiesta viene recuperata dalla seconda regola e riscritta su /vote/public/index.php.