2010-01-15 20 views
7

Im instalación phpancake, hay una carpeta no shema como esto¿Qué significa esta regla de Reescritura?

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

¿Qué significa esta regla?

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] 

Respuesta

11

La reescritura tiene dos partes. El primero especifica que si el nombre de archivo solicitado es un archivo normal con un tamaño mayor que 0 (-s), un enlace simbólico (-l) o un directorio (-d), reescriba en ninguna parte, por ejemplo. no tomar ninguna medida. [NC,L] significa que la regla no es sensible a mayúsculas y minúsculas y la última regla que coinciden con estas condiciones.

Todas las demás solicitudes se envían al /vote/public/index.php.

El propósito de esta reescritura es que se puede obtener un archivo real y existente del servidor sin interferencias. Sin la primera regla, cada solicitud de archivo (archivos css y js, imágenes, etc.) iría al index.php, lo que ensuciaría bastante las cosas.

Normalmente, esto está escrito en una declaración. Puede negar las condiciones, y luego los [OR] statemens puede ser llevado a cabo también:

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

Esto es equivalente a la declaración original.

+0

@Tatu Ulmanen: ¿puedes explicar qué significa 'RewriteCond% {REQUEST_FILENAME} -f'? ¿es simplemente el "tamaño" en el que difieren las opciones '-s' y' -f'? Y también, ¿cuáles serían los archivos regulares (no binarios?)? –

0

Esos son reescrituras principalmente estándar que comprobar si existe el archivo solicitado (o directorio o enlace simbólico) en el disco, en cuyo caso el archivo/directorio/etc. debería ser usado.

Todos los demás partidos deben ir a /votes/public/index.php

+0

de la respuesta de @Tatu Ulmanen, ¿pueden explicar qué significa 'RewriteCond% {REQUEST_FILENAME} -f'? ¿es simplemente el "tamaño" en el que difieren las opciones '-s' y' -f'? Y también, ¿cuáles serían los archivos regulares (no binarios?)? –

0

La primera regla pasará a través de todas las solicitudes que se pueden asignar a un archivo normal con un tamaño mayor que cero (-s), una simbólica enlace (-l) o un directorio (-d). Cada segunda solicitud es captada por la segunda regla y reescrita a /vote/public/index.php.

Cuestiones relacionadas