2009-03-26 30 views
14

Uso la herramienta Rewriting.NET de URL con IIS 6. Tengo mi contenido de página predeterminado configurado para default.aspx en IIS. Lo que intento hacer es que /default.aspx proporcione una redirección 301 al directorio raíz (www.example.com/default.aspx -> www.example.com). Intenté desactivar los documentos predeterminados, pero fue en vano.Reescritura de URL de /default.aspx a/

Lo que espero hacer es utilizar un par de reglas de URL Rewriting.NET para lograr este objetivo. ¿Alguna idea?

EDIT:

Lo siento, me olvidé de aclarar. Si redirecciono de/default.aspx a/con los documentos predeterminados activados (me gustaría dejarlos encendidos) entonces obtengo un bucle infinito de valor predeterminado ->/-> predeterminado

+1

Sugiero que publique información sobre su configuración – eglasius

Respuesta

15

Al final terminé usando IIS 7 con el módulo de reescritura de URL, que le permite hacer este redireccionamiento correctamente.

Editar:

La regla es

<rule name="Default Redirect" stopProcessing="true"> 
    <match url="^default\.aspx$" /> 
    <action type="Redirect" url="/" redirectType="Permanent" /> 
</rule> 

se puede hacer eso con una regla diferente para cada carpeta, o puede utilizar

<rule name="All Redirect"> 
    <match url="^(.*\/)*default\.aspx$" /> 
    <action type="Rewrite" url="{R:1}" /> 
</rule> 
+0

He actualizado la respuesta con algún código – CodeMonkey1313

+1

No sé si 'actualizar a IIS7' es realmente una respuesta a este problema. – ChadT

+0

Gracias por compartir – citronas

0

No estoy seguro de entender cuál es el problema.

Aunque si desactiva los documentos predeterminados, entonces/simplemente señalará el directorio en lugar de la página predeterminada.aspx.

Deje los documentos predeterminados y simplemente realice una redirección en función de si default.aspx está en la url solicitada o no.

+0

que crearía un bucle infinito – CodeMonkey1313

+0

"hacer un redireccionamiento basado en si default.aspx está en la URL solicitada": if (Request.Url.ToString(). ToLower(). IndexOf ("default.aspx")! = -1) response.redirect ("/"); –

+0

Esto todavía resulta en un bucle infinito, ya que los documentos predeterminados están encendidos, una solicitud de/se convierte en una solicitud de /default.aspx – CodeMonkey1313

1

Si lo entiendo correctamente, no desea mostrar 'default.aspx' siempre que alguien entre en una carpeta con ese documento disponible.

Entonces, si lo hacen, ¿quieres redirigir automáticamente al '/' y simplemente cargar el documento predeterminado de todos modos?

Si ese es el caso, entonces, como se indicó anteriormente, se corre el riesgo de un ciclo infinito. La segunda observación se le da una respuesta, pero supongo que la expansión en el motor re-escritura lo que se desea es:

Apagar documentos por defecto Register cada carpeta con el motor de re-escritura Cuando se solicita esa carpeta carga el archivo default.aspx según tu regla de destino

¿Suena esto bien?

Tengo que preguntar, ¿por qué quieres hacer esto?

+0

Sé que es bastante extraño, pero es un requisito del sitio, por Valor SEO, por lo que solo un enlace lo llevará a default.aspx, en lugar de a dos. – CodeMonkey1313

+0

He hecho un poco de entrenamiento de SEO y escuchar esto parece extraño. Me sorprendería que un motor de búsqueda como Google o MSN lo penalizara. Así que solo puedo adivinarlo para que obtengas todos tus puntos de clasificación para una url. Aún no he hecho cosas de SEO en un momento así que eso es solo una suposición! – Simon

+1

Según tengo entendido, no es que haya dos páginas que sirvan en la misma página, sino que si las personas se vinculan a example.com y example.com/default.aspx, me dicen que distribuye el valor del enlace . – CodeMonkey1313

0

bien, puede utilizar .net regular para inspeccionar httprequest url, si tiene "default.aspx" en él, puede redireccionar a "/", no habrá bucle infinito y será mejor que lo haga en la precarga, y fin de respuesta después, para reducir al mínimo el tiempo que lleva procesar

+0

Lo sentimos, no llegué a ver el comentarios en la respuesta anterior, oye tengo la respuesta correcta – Ayyash

2

que tenía el mismo problema. Para aquellos que se preguntan por qué alguien querría hacer esto, se trata de SEO. Si Google indexa su página de inicio con y sin default.aspx al final, el PageRank y la popularidad del enlace se dividirán entre las dos URL. Ahora, si está experimentando este problema y puede consolidar las dos URL, entonces puede obtener un impulso en las clasificaciones de búsqueda.Una cosa más a tener en cuenta es que, si tiene problemas, DEBE usar un redireccionamiento 301 para que Google consolide su índice entre dos URL. De lo contrario, tus esfuerzos serán inútiles.

Esto es un poco tarde ya que ya ha resuelto esto actualizando a IIS7. Pero agregaré que la única solución a este problema que he encontrado para IIS6 es agregar un filtro ISAPI.

que documentó la solución completa aquí ... http://swortham.blogspot.com/2008/12/redirecting-default-page-defaultaspx-to.html

5

me encontré con este mismo problema hace un tiempo al tratar de averiguar por qué algunos IIS instala funcionaría redirigir el /default.aspx y algunos podrían degenerar en un bucle terminal.

Encontré que la respuesta era si asp.net era 'comodín' mapeado para ejecutar todas las solicitudes dentro de IIS.

En pocas palabras, si usted tiene una configuración de IIS fuera de la caja, sino que añadirá el documento predeterminado en cualquier solicitud de la raíz del sitio. Así, example.com se convierte en example.com/default.aspx cuando inspecciona Request.Url en ASP.NET. Por lo tanto, si detecta esta situación y trata de redireccionar y volver a example.com, IIS lo hace, agrega el /default.aspx y su código queda atrapado en un bucle de su propia creación.

La excepción a esto es si configura la asignación de caracteres comodín para que todas las solicitudes se procesen a través de la interconexión asp.net. En este caso, IIS ya no agrega el documento predeterminado a cada solicitud en el nivel Request.Url. Y así puedes hacer la redirección.

Lo puse todo en esta publicación de blog: 301 Redirecting from /default.aspx to the site root - the final word - pero esto fue escrito hace varios años y los cambios en IIS7 pueden haber solucionado el problema, como lo proporciona la respuesta actualmente aceptada.

Pero si estás luchando contra este problema, entonces mira el estado de la asignación de comodines es el lugar adecuado para comenzar.

Cuestiones relacionadas