apache - ocultar - mod_rewrite: eliminar la barra inclinada(¡solo una!)
ocultar url php barra direcciones (4)
Uso mod_rewrite / .htaccess para URL bonitas.
Estoy usando esta condición / regla para eliminar barras diagonales (o más bien: reescribir a la URL no rastreada, mediante un redireccionamiento 301; lo hago para evitar el contenido duplicado y porque me gustan las URL sin barras inclinadas) mejor):
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{HTTP_HOST} !^/.localhost$ [NC] RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L]
Trabajando bien hasta ahora. Único inconveniente:
también reenvía "URL de seguimiento múltiple" -URL a URL-de-seguimiento-no- seguidas .
Ejemplo:
http://example.tld/foo/bar//////
hacia adelante a http://example.tld/foo/bar
mientras que solo quiero http://example.tld/foo/bar/
para reenviar a http://example.tld/foo/bar
.
Por lo tanto, ¿es posible eliminar solo las barras al final si solo se trata de una barra inclinada?
¡Lo siento si esta es una pregunta algo molesta o extraña!
Gracias.
Aquí hay una solución basada en mod-alias para eliminar la barra final de URL:
RedirectMatch ^/(.*?)/$ /$1
Puede usar el redireccionamiento anterior en su archivo htaccess o server.config.
Esto redirigirá / uri / a * / uri **.
cambie la regla de reescritura a:
RewriteRule ^(.+[^/])/$ http://%{HTTP_HOST}/$1 [R=301,L]
en inglés: coincide con el inicio de la cadena, una o más cosas, NO una barra, una barra, el final.
la siguiente regla coincidirá con cualquier URL que termine en una barra inclinada y eliminará todas las barras al final:
RewriteRule ^(.*)/+$ $1 [R=301,L]
Nota: La respuesta actualmente aceptada solo funciona para http, no https, pero esta funciona para ambos.
^(.+[^/])/$
Es decir, el personaje anterior no debe ser una barra.