Noviembre 6

2017
Una vez instalado rewrite

En estos días de tanto SEO y cosas parecidas, es necesario, muchas veces, poder eliminar el nombre de los archivos desde el servidor, para así ocultar la autentica URL al usuario y que quede todo "mas bonito" o mas "fácil de recordar".

Con Internet Infromation Server 6.0 en adelante, tenemos el rewrite para poder solventar estas situaciones. Hoy os propongo, como eliminar el molesto index.html o default.asp de las direcciones URL en nuestro servidor utilizando esta herramienta.

Instalar rewrite

Lo primero que debemos hacer es instalar el modulo en nuestro servidor. Podéis utilizar la herramienta de web instaler que esta en el propio servidor o descargarla desde internet. Aquí os dejo una pagina que explica como descargar a instalar rewrite y algunos enlaces directos.

Microsoft URL Rewrite Module 2.0 for IIS 7 (x64) 

Microsoft URL Rewrite Module 2.0 for IIS (x64)

Una vez que lo tengamos instalado lo tenemos que ver en los módulos de configuración.

Una vez instalado rewrite

Configurando rewrite

Bien ahora viene lo "difícil". Realmente es un poco complicado de entender, y vamos a utilizar expresiones regulares, que si no sabes como se manejan, pues te va a parecer como leer chino. Pero bueno, siguiendo estos pasos tal cual lo puedes configurar, que al fin y al cabo es lo que interesa.

Explico un poco cual va a ser el procedimiento y luego voy a ir poniendo capturas de pantalla para que lo tengáis un poco mas claro.

  1. Eliminaremos la extensión del archivo. Esto realmente quedaría para todos los archivos, por lo que ya casi, casi, seria mas "bonito" o "fácil de recordar".
  2. Al eliminar la extensión del archivo nos quedara una URL como http://midominio.com/index o http://midominio.com/default o el nombre del archivo claro.
  3. Por ultimo eliminaremos la palabra index o default. Y esto si que ya solo se pude hacer con las paginas que sea la pagina por defecto, ya que redimiremos al usuario a la misma ruta sin el nombre del archivo.
Esta es la vista de como quedarían todas las reglas una vez creadas.

Vista General de las reglas
Vamos con las capturas de pantalla paso a paso. Una consideración, yo lo hice para una web en HTML por lo que los archivos eran index.html es facil de analizar y cambiar por default.asp si es lo que tu necesitas.

Eliminar la extensión de los archivos

Eliminar la extension del archivo

Redireccionar a la nueva URL sin la extensión del archivo

Uno de los detallitos, es que cuando hacemos un cambio con rewrite, realmente se genera un re direccionamiento a otra URL donde no se ve la extensión pero se muestra la pagina, por eso nuestra URL cambia a http://dominio.com/index

Redireccionar a URL sin extension

Finalmente redireccionar a esa misma URL sin el nombre del archivo INDEX

Como ya avise, esto es solo para las paginas que sean la pagina por defecto, por lo que este ultimo paso, solo funcionara con las paginas que sean paginas por defecto.

Redireccionar a URL sin nada mas

Por ultimo. para los que les gusta escribir código.

Para los que como yo, quieren tener un "control absoluto" y saber exactamente como se hace, aquí os dejo el código de como debe de quedar vuestro archivo web.config una vez terminado de aplicar todas las reglas. Como ya sabéis, podrías escribir directamente sobre el web.config estas reglas y funcionara igualmente. No te olvides de instalar el modulo rewrite antes de escribir nada en el web.config porque si no la web no va a funcionar.

 <rewrite>
<rules>
<clear />

<rule name="Hide .html ext">
<match url="^(.*)" ignoreCase="true" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}.html" matchType="IsFile" />
</conditions>
<action type="Rewrite" url="{R:0}.html" />
</rule>
<rule name="Redirecting .html ext" stopProcessing="true">
<match url="^(.*).html" />
<conditions logicalGrouping="MatchAny" trackAllCaptures="false">
<add input="{URL}" pattern="(.*).html" />
</conditions>
<action type="Redirect" url="{R:1}" />
</rule>
<rule name="Redirecting delete index" stopProcessing="true">
<match url="^(.*)index" />
<conditions logicalGrouping="MatchAny" trackAllCaptures="false">
<add input="{URL}" pattern="(.*)index" />
</conditions>
<action type="Redirect" url="{R:1}" />
</rule>
</rules>
</rewrite>

Esto esta incluido dentro de   <system.webServer>.

Espero que os haya servido estas lineas.


#IIS #web #SERVIDORES


0 Comentarios

Redireccionar a URL sin nada mas Vista General de las reglas
Redireccionar a URL sin extension Una vez instalado rewrite
Eliminar la extension del archivo


Archivo