regex - normalmente - htaccess-Eliminar múltiples barras después del dominio con caracteres acentuados codificados
quitar la categoría base normalmente category/) de la url de categoría (2)
Puedo eliminar varias barras en cualquier parte de la URL usando:
RewriteCond %{REQUEST_URI} ^(.*?)(/{2,})(.*)$
RewriteRule . %1/%3 [R=301,L]
Pero no funciona para múltiples barras después del dominio
Yo he tratado
RewriteCond %{HTTP_HOST} !=""
RewriteCond %{THE_REQUEST} ^[A-Z]+/s//+(.*)/sHTTP/[0-9.]+$ [OR]
RewriteCond %{THE_REQUEST} ^[A-Z]+/s(.*/)/+/sHTTP/[0-9.]+$
RewriteRule .* http://%{HTTP_HOST}/%1 [R=301,L]
y
RewriteCond %{THE_REQUEST} ^([A-Z]{3,9})/ (.*)//([^/ ]*)
RewriteRule ^ %2/%3 [R=301,L]
ambos producen el reencauche esperado al pasar de
domain.com/////hello
a
domain.com/hello
Pero de donde
domain.com/////héllo
el resultado está codificado
domain.com/h%25c%25allo
¿Cómo evitar que los caracteres acentuados se codifiquen al eliminar varias barras después del dominio?
EDITAR: pera a la respuesta de anubhava
RewriteCond %{THE_REQUEST} /s/+(.*?)/{2,}([^/s]*) [NC]
RewriteRule ^ %1/%2 [R=301,L,NE]
El personaje acentuado está protegido y recortado con éxito con más de repetidas barras
domain.com////////héllo
pero no solo con 2
domain.com//héllo
Esta regla debería funcionar para usted:
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}/s/+(.*?)/+(/[^/s]+) [NC]
RewriteRule ^ %1%2 [R=302,L,NE]
Esto hará estas redirecciones:
-
/////help => /help
-
/////héllo/////abc/////123 => /héllo/abc/123
La respuesta de anubhava es la más corta pero alternativamente esta también está funcionando:
RewriteCond %{HTTP_HOST} !=""
RewriteCond %{THE_REQUEST} ^[A-Z]+/s//+(.*)/sHTTP/[0-9.]+$ [OR]
RewriteCond %{THE_REQUEST} ^[A-Z]+/s(.*/)/+/sHTTP/[0-9.]+$
RewriteRule .* http://%{HTTP_HOST}/%1 [R=301,L,NE]