¿Qué significa esta regla de reescritura?
Pregunta
Estoy instalando phpancake, hay una carpeta allí Shema como esta
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]
Solución
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
), reescribe a ninguna parte, por ejemplo. no tomar ninguna medida. [NC,L]
significa que la regla no es sensible al caso y la última regla que coinciden con estas condiciones.
Todas las demás solicitudes se envían a /vote/public/index.php
.
El propósito de esta reescritura es que un archivo real y existente se puede obtener del servidor sin interferencia. Sin la primera regla, cada solicitud de archivo (archivos CSS y JS, imágenes, etc.) iría a index.php
Lo que arruinaría las cosas bastante mal.
Sin embargo, generalmente esto está escrito en una declaración. Puedes negar las condiciones, y luego el [OR]
Statemens también se pueden sacar:
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.
Otros consejos
Esas son principalmente reescrituras estándar que verifican si el archivo solicitado (o directorio o enlace simbólico) existe 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
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
), un enlace simbólico (-l
) o un directorio (-d
). Cualquier otra solicitud es obtenida por la segunda regla y reescribió a /vote/public/index.php.