URLs limpias en IIS con mod_rewrite
-
25-09-2019 - |
Pregunta
Tengo un problema mod_rewrite. O con mayor precisión, tengo un problema con ISAPI_REWRITE, que es un clon MOD_REWRITE para IIS. Específicamente, ISAPI_REWrite V3 que se ejecuta en IIS 7. Su objetivo es comportarse de manera idéntica a MOD_REWRITE, por lo que espero que mi problema se aplique a MOD_REWRITE también.
Mi problema se reduce a esto: tengo un guión bar.php
al que quiero acceder a través de la URL foo
. Primero reescribo foo
a bar
. Luego intente convertir la URL limpia en un nombre de archivo real.
RewriteRule ^foo$ bar
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule .* $0.php
los RewriteCond
está fallando porque ${REQUEST_FILENAME}
Todavía dice "foo" en lugar de "bar". No se actualiza después de la primera reescritura.
¿Cómo puedo hacer que esto funcione? Podría arreglar esto simplemente escribiendo RewriteRule ^foo$ bar.php
. Pero preferiría mantener las reglas de reasignación de URL separadas de las reglas de extensión del archivo.
Solución
Respuesta tentativa ...
RewriteCond %{DOCUMENT_ROOT}/$0.php -f
Mediante el uso $0
Tengo acceso a la última URL reescrita, lo que me hace feliz. Pero tengo que agregar %{DOCUMENT_ROOT}
Para convertir eso en un nombre de archivo, lo que me entristece. Un poco de kludge.