quitar normalmente categoría regex apache mod-rewrite

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:

  1. /////help => /help
  2. /////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]