Добрый день, для удаления дублирующихся слешей пользуюсь регуляркой вида:
RewriteCond %{REQUEST_URI} ^(.*?)/{2,}(.*?)$ [NC]
RewriteRule . %1/%2 [R=301]
Но возникла проблема, и заключается она в том, что сия регулярка не глобальная каждый блок слешей обрабатывает отдельным проходом, соответственно — отдельным запросом, и в логе получается такая петрушка:
127.0.0.1 - - [17/Jul/2013:12:23:04 +0300] "GET ////WAT////no////u//must/be////kidding/////me// HTTP/1.1" 301 269
127.0.0.1 - - [17/Jul/2013:12:23:04 +0300] "GET /WAT/no////u//must/be////kidding/////me// HTTP/1.1" 301 266
127.0.0.1 - - [17/Jul/2013:12:23:04 +0300] "GET /WAT/no/u//must/be////kidding/////me// HTTP/1.1" 301 265
127.0.0.1 - - [17/Jul/2013:12:23:04 +0300] "GET /WAT/no/u/must/be////kidding/////me// HTTP/1.1" 301 262
127.0.0.1 - - [17/Jul/2013:12:23:04 +0300] "GET /WAT/no/u/must/be/kidding/////me// HTTP/1.1" 301 258
127.0.0.1 - - [17/Jul/2013:12:23:04 +0300] "GET /WAT/no/u/must/be/kidding/me// HTTP/1.1" 301 257
127.0.0.1 - - [17/Jul/2013:12:23:04 +0300] "GET /WAT/no/u/must/be/kidding/me/ HTTP/1.1" 404 226
Подскажите пожалуйста, возможно ли средствами .htaccess заменить все дублирующиеся слеши в рамках одного прохода, и как?
P.S. Дополнительный, бонусный вопрос: Так и не смог средствами Apache заменить дублирующимеся слеши от корня без query. Например
http://test.ru///////
не ловится реврайтом, как бы я ни старался. В верхнем случае эти слеши убираются при внутреннем редиректе апача, но не реврайтом, видно это по второй строчке лога, в которой видно, что пропали слеши не только в начале, но и перед «no», что и было сделано mod_rewrite.