rewriterule rewritecond parametros modelo mod_rewrite htaccess ejemplos ejemplo basico amigables php iis url-rewriting

rewritecond - PHP, reescritura de URL con htaccess y reescritura de URL de Microsoft IIS



url amigables htaccess (4)

Estoy acostumbrado a trabajar con servidores Apache, así que cuando mod_rewrite está habilitado, puedo crear un archivo htaccess y usar la reescritura de URL.

Aquí está mi archivo htaccess:

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

Ahora construí este sitio que usa este módulo de reescritura de URL, pero aprendí que es un servidor de Microsoft. ¿Puedo usar mi archivo htaccess? ¿Hay algo que deba cambiar para que funcione? ¿Cómo puedo saber si la reescritura de URL está configurada en el servidor de Microsoft?


El archivo .htaccess es una convención de Apache para proporcionar acceso de usuario final a la configuración de Apache, por lo que no podrá utilizarlo como reemplazo en un servidor IIS (Microsoft). Podrías usarlo si estuvieras ejecutando Apache en Windows.

IIS7 tiene un módulo de reescritura de URL que ofrece soporte para reescribir las URL. También está el producto ISAPI_Rewrite que hace lo mismo para las versiones anteriores de IIS. Es probable que necesite algún nivel de permisos administrativos en el servidor para usar cualquiera de estos módulos (es decir, sin mecanismo similar a htaccess)


Puede usar su configuración anterior como está en los productos ISAPI_Rewrite 3 o Helicon Ape .


Si usa IIS 7, puede usar el Módulo de reescritura de URL de IIS, que tiene una función de "Reglas de importación" que se puede usar para traducir las reglas de mod_rewrite al formato de reescritura de URL de IIS. Estas reglas de reescritura particulares no se traducirán porque RewriteCond usa los indicadores "-s" y "-l" que verifican si la URL solicitada corresponde a un archivo de tamaño distinto de cero o a un enlace simbólico en un sistema de archivos. Si su aplicación no utiliza ningún enlace simbólico, puede reemplazar estas condiciones de forma segura con:

RewriteCond %{REQUEST_FILENAME} -f [OR]

y luego convierta las reglas usando IIS URL Rewrite UI. Eso dará como resultado estas reglas:

<rewrite> <rules> <rule name="Imported Rule 1" stopProcessing="true"> <match url="^.*$" /> <conditions logicalGrouping="MatchAny"> <add input="{REQUEST_FILENAME}" matchType="IsFile" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" /> </conditions> <action type="None" /> </rule> <rule name="Imported Rule 2" stopProcessing="true"> <match url="^.*$" /> <action type="Rewrite" url="index.php" /> </rule> </rules> </rewrite>