Re: Помогите написать regexp для удаления лишних слешей

Pavel V. pavel2000 at ngs.ru
Sun Sep 9 17:30:30 UTC 2012


Здравствуйте, Денис.

Вы писали 9 сентября 2012 г., 17:31:24:

> Какое то время была ошибка в урлах и яндекс проиндексировал страницы вида

> /category/subcategory//

> Теперь пытаюсь убрать такие ссылки 302 редиректом (убрать 2 и более
> слеша на конце)

> if ($request_uri ~ "^(.+)/{2,}$"){
>      rewrite "^(.+)/{2,}$" $1 permanent;
> }

> Не выходит

> if ($request_uri ~ "^(.*)/+$"){
>      rewrite "^(.*)/+$" $1 permanent;
> }

А дописать слеш в реврайт - не вариант?

Вам надо такой if (протестировано) :

if ($request_uri ~ "^(.*)//+$"){
     rewrite "^(.*)/+$" $1/ permanent;
}

Кроме того: http://wiki.nginx.org/IfIsEvil и надо написать как-то так (не проверено) (требуется 0.8.42+)

location ~* ^(?<varname>.*/)/+$ {
         return 302 $varname;
}

http://nginx.org/ru/docs/http/ngx_http_core_module.html#merge_slashes


> Обрезает все слеши , так как модификатор + эквивалент {1,} но мне бы
> хотелось {2,} почему такая запись не работает ?
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru


-- 
С уважением,
 Pavel                          mailto:pavel2000 at ngs.ru



Подробная информация о списке рассылки nginx-ru