/ / Las URL con el símbolo "%" al final generan un error de http, ¿cómo evitarlo con htaccess? - .htaccess

Las URL con el símbolo "%" al final generan un error de http, ¿cómo evitarlo con htaccess? - .htaccess

Tengo una duda con algunas de mis URLs desde mi acces_log. Hay algunas URLs de sitios externos que me enlazan como http://domain.com/url_name.htm% (si, con%).

Entonces ... mi servidor devuelve un error http, necesito redireccionar estas URL falsas a la forma correcta, y pensé en htaccess.

Solo necesito detectar el símbolo% en el último carácter de la URL y redirigir sin él. http://domain.com/url_name.htm% -> http://domain.com/url_name.htm

¿Cómo puedo hacer esto? Estaba tratando con algunas muestras con? símbolo pero no tuve suerte

¡Gracias!

Respuestas

1 para la respuesta № 1

Ya encontré el error ...

Parece que algunas URL mal formadas no pasan a vhost, entonces estas peticiones no leen el archivo .htaccess.

La única manera de resolver esto, es añadiendo httpd.conf la directiva ErrorDocument 400 ... No es la mejor opción para servidores con diferentes vhosts ... porque todos tendrán el mismo comportamiento ... pero creo que esa es la única manera para este caso.

Cita de Documentación de apache:

Aunque la mayoría de los mensajes de error pueden ser anulados,hay ciertas circunstancias en las que se usan los mensajes internos independientemente de la configuración de ErrorDocument. En particular, si se detecta una solicitud mal formada, el procesamiento normal de la solicitud se detendrá de inmediato y se devolverá el mensaje de error interno. Esto es necesario para protegerse contra problemas de seguridad causados ​​por solicitudes incorrectas.

¡¡Gracias de cualquier manera!!


0 para la respuesta № 2

Esta página es muy útil sobre las reglas de .htaccess. http://www.helicontech.com/isapi_rewrite/doc/RewriteRule.htm

Vi algunas soluciones a esto que también usan un pequeño script php. IE este reemplaza #

.htaccess
RewriteRule old.php redirect.php?          url=http://example.com/new.php|hash      [R=301,QSA,L]

redirect.php
<?php
$new_url = str_replace("|", "#", $_GET["url"]);
header("Location: ".$new_url, 301);
die;
?>