2010-03-13 12 views
5

Tengo un blog (wordpress) donde después de comentar los usuarios son redirigidos a la página con un anclaje a su comentario. Debería tener este aspecto:¿Cómo volver a escribir una URL con% 23 en ella?

http://example.org/foo-bar/#comment-570630

Pero de alguna forma consigo una gran cantidad de 404 ins mis archivos de registro para este tipo de URL:

http://example.org/foo-bar/%23comment-570630

¿Hay una manera de escribir una regla de reescritura .htaccess a ¿arregla esto?

Pregunta extra: ¿Alguna idea de por qué sucede esto y qué puedo hacer al respecto?

+1

¿Cómo se realiza la redirección? – Gumbo

+0

@Gumbo: con un redireccionamiento 302 encontrado. El encabezado generado se ve así: "Ubicación:/foo-bar/# comment-571738" – janpio

+0

¿Puedes publicar el código que hace eso? – Gumbo

Respuesta

4

%23 es la representación URL codificada de #. Sospecho que sus reglas de reescritura no satisfarán %23. Deberías investigar cómo se está construyendo la respuesta. Específicamente, cualquier función de codificación URL.

Sin embargo, sería posible resolver su problema con una regla de reescritura. Comprenda que devolverá dos respuestas al cliente después de enviar un comentario. Es por eso que es preferible corregir la primera respuesta.

# http://example.org/foo-bar/%23comment-570630 -> http://example.org/foo-bar/#comment-570630 
RewriteCond %{REQUEST_URI} %23comment-\d+$ 
RewriteRule (.+)\/%23-comment(\d+)$ http://host/$1/#comment-$2 [R=301] 

Es no probado, pero debería funcionar (no estoy seguro acerca de escapar \% ya que tiene un significado especial en mod_rewrite).

+0

El problema es que la respuesta está bien en todos los sistemas que pude probarlo. Es # en la URL y la redirección funciona, no sé dónde y por qué podría romperse. – janpio

+0

Para su regla de reescritura: no funciona. El emparejamiento del request_uri no parece funcionar, ahí es donde me quedé atascado y vine a preguntar también. – janpio

+0

'RewriteCond' no está siendo satisfecho? ¿Has intentado escapar del personaje porcentual? –

0

¿Has probado el B Flag?

RewriteCond %{REQUEST_URI} %23comment-\d+$ 
RewriteRule (.+)\/%23-comment(\d+)$ http://host/$1/#comment-$2 [B,R=301] 

no probados con su caso específico, pero utilizados para un problema relacionado.

+0

esta respuesta es para las personas que buscan en Google exactamente este mismo problema ... disculpas por un poco revivir este hilo cerrado y viejo – maddrag0n

Cuestiones relacionadas