URL puliti in IIS con mod_rewrite
-
25-09-2019 - |
Domanda
Ho un problema Mod_Rewrite. O più precisamente, ho un problema con ISAPI_Rewrite, che è un clone Mod_Rewrite per IIS. In particolare, ISAPI_REWRITE V3 in esecuzione su IIS 7. Mira a comportarsi in modo identico a mod_rewrite, quindi spero che il mio problema si applichino anche a mod_rewrite.
Il mio problema si riduce a questo: ho una sceneggiatura bar.php
a cui voglio accedere tramite l'URL foo
. Io prima riscrivo foo
a bar
. Quindi prova a convertire l'URL pulito in un nome file reale.
RewriteRule ^foo$ bar
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule .* $0.php
Il RewriteCond
sta fallendo perché ${REQUEST_FILENAME}
dice ancora "foo" piuttosto che "bar". Non viene aggiornato dopo la prima riscrittura.
Come posso far funzionare questo? Potrei risolverlo semplicemente scrivendo RewriteRule ^foo$ bar.php
. Ma preferirei fortemente mantenere separate le regole di rimappatura dell'URL dalle regole di estensione del file.
Soluzione
Risposta provvisoria ...
RewriteCond %{DOCUMENT_ROOT}/$0.php -f
Usando $0
Ho accesso all'ultimo URL riscritto, che mi rende felice. Ma devo aggiungere %{DOCUMENT_ROOT}
Per trasformarlo in un nome di file, il che mi rende triste. Un po 'di kludge.