2009-08-18 28 views
6

Necesito tomar las URL entrantes estándar y reescribir redirigirlas a anclas específicas de destino en una sola página (el nombre de la página html entrante se convierte en el nombre del ancla). Por ejemplo, la regla sería así:Cómo redirigir a una url que contiene un ancla (#)?

RewriteRule ^files/([a-zA-Z0-9\-_]+)\.html$ /test.html#$1 [R] 

Así que esta url:

http://foo.com/files/bar.html 

... se convertiría en:

http://foo.com/test.html#bar 

La regla en sí funciona bien, pero el carácter # se codifica en la barra de direcciones del navegador para:

http://foo.com/test.html%23bar 

, que por supuesto no funciona correctamente como ancla. ¿Hay alguna manera en .htaccess de obligarlo a no codificar el hash? También intenté escapar como \#, pero eso no hace ninguna diferencia.

Respuesta

9

Pruebe la bandera (NE) noescape en su regla:

RewriteRule ^files/([a-zA-Z0-9\-_]+)\.html$ /test.html#$1 [NE, R] 
+0

impresionante, gracias. Pensé que tenía que ser algo simple, pero Google no me mostraba el camino;) –

5

Uso NE o Sin bandera de escape:

RewriteRule ^files/([a-zA-Z0-9\-_]+)\.html$ /test.html#$1 [NE,R]

+3

Pat me ganó en 57 segundos;) Que el mundo sepa ¡La advertencia de "nuevas respuestas" de SO toma más tiempo que eso! – inerte

+1

¡Victoria para Pat! :) – Pat

+1

+1 para el "perdedor" porque su código es un byte más corto :-) – Olaf

Cuestiones relacionadas