Aderus
@Aderus

Как убрать повторяющиеся слэши (они же %2F) в конце url?

Здравствуйте!
1) Есть ссылка вида: http://www.domain.ru/works/4/?photos=3409%2F%2F%2F...
2) Также доступна и так: www.domain.ru/works/4/?photos=3409
Как сделать так, чтобы ссылка со слешем (1 вариант) редиректилась на без слеша (2 вариант)?
  • Вопрос задан
  • 452 просмотра
Пригласить эксперта
Ответы на вопрос 1
shambler81
@shambler81 Куратор тега htaccess
Все до тупости просто это не урл
GET - не является частью урла
Соответственно вы и не можите сделать простой редирект.

Так бы оно выглядело ровно по тз
http://www.domain.ru/works/4/?photos=3409
RewriteCond %{QUERY_STRING} (^|&)photos\=3409%2F%2F%2F%2F%2F%2F%2F%2F%2F%25($|&)
RewriteRule ^works/4/$ /works/4/\?photos=3409 [L,R=301]

Но насколько я понимаю вам нужно отрезать не просто текущий урл а все слеши, хотя непонятно что они вообще там делают.

RewriteCond %{QUERY_STRING} (^|&)photos\=([0-9]{1,}).*($|&)
RewriteRule ^works/4/$ /works/4/\?photos=%2 [L,R=301]
И так по порядку
(^|&)...($|&) - просто гет запрос он может бытьне первым а вторым следовательно можен или начинаться или заканчиваться с? или & так что можно обойтись и без этого.
photos\= Равно экранируем
[0-9]{1,} - от нуля до 9, повторить один раз и более
(..) скобки групируют если группы из RewriteRule - ' это $1$2 и тд по номеру группы
То они же из cond будут %1%2 соответственно ты видешь что photos=%2 - это то что будет в конде во второй скобке.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы