2010-12-03 14 views
17

a menudo veo en aplicaciones PHP MVC un RewriteRule Apache que tiene este aspecto:Apache RewriteRule, - (guión) como la sustitución

RewriteRule ^.*$ - [NC,L] 

La documentación sobre Apache decir:

Un guión indica que no se debe realizar ninguna sustitución (la ruta existente se pasa sin tocar). Esto es que se usa cuando se necesita aplicar una bandera (ver a continuación) sin cambiar la ruta.

Entonces, por lo que deduzco, puede usar esto para transformar una ruta usando una bandera, es decir, [NC] para las reglas de reescritura a seguir?

¿Podría alguien explicar este guión RewriteRule un poco mejor?

+0

que utiliza esta sintaxis "no hacer nada" para evitar reglas .htaccess de la carpeta principal de la ejecución. Fue útil con Apache 2.2. Si está utilizando Apache 2.4, puede usar 'RewriteOptions IgnoreInherit' para evitar las reglas de reescritura de la carpeta principal. – maganap

Respuesta

11

Ver esta respuesta:

mod_rewrite: what does this RewriteRule do?

En esencia, significa "no hacer nada si los anteriores RewriteConds partido". La próxima RewriteRule (s) volverá a hacer algo diferente cuando las RewriteConds no coincidan. En el caso de la publicación a la que te he vinculado, la siguiente RewriteRule reescribe la url incluyendo "index.php".

+0

Así que es algo así como un operador de otra persona. ¿O es lo mismo que anteponer un signo de exclamación (!) A todo RewriteCond? Intenté buscar la respuesta pero todos estaban relacionados con RewriteRules y escapes de guiones. – Cobby

+0

Entonces, si lo entiendo correctamente, ¿usar el tablero como objetivo tiene más sentido si se aplica la última [L]? –

7

Sé que esto es un poco viejo, pero básicamente dice "Oye, tal vez quiera usar Rewrite, pero para las URL que coincidan con los RewriteCond (s) anteriores, déjalo en blanco y ciérralo".

EX:

# If file or directory exists, we wanna send them there 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule .* - [L] 

# Otherwise, use our smart page handler! 
RewriteRule ^(.*)\.php$ virtualPage.php?page=$1 [L] 
Cuestiones relacionadas