Мне нужно реплицировать следующие правила перезаписи Apache в конфигурации nginx. Что такое nginx эквивалент:
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]
целевая среда Ubuntu 12.04
Мне нужно реплицировать следующие правила перезаписи Apache в конфигурации nginx. Что такое nginx эквивалент:
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]
целевая среда Ubuntu 12.04
Я хотел бы предложить такой подход:
# remove multiple sequences of forward slashes
# rewrite URI has duplicate slashes already removed by Nginx (merge_slashes on), just need to rewrite back to current location
# note: the use of "^[^?]*?" avoids matches in querystring portion which would cause an infinite redirect loop
if ($request_uri ~ "^[^?]*?//") {
rewrite "^" $scheme://$host$uri permanent;
}
он использует поведение по умолчанию nginx-слияние косых черт, поэтому нам не нужно заменять косые черты, мы просто перенаправляем
Я нашел ответ kwo на не работает. Глядя на мой журнал отладки, вот что происходит:
2014/08/18 15:51:04 [debug] 16361#0:1 регулярное выражение сценария http:" (.) / / +(.*)" 2014/08/18 15:51: 04 [Примечание] 16361#0:1 "(.) / / +(.*)" не соответствует "/связаться с нами/", клиент: 59.167.230.186, сервер: *.domain.edu запрос: "получить //////свяжитесь с нами//// НТТР/1.1", хозяин: "test.domain.edu"
Я обнаружил, что это работает для меня:
if ($request_uri ~* "\/\/") {
rewrite ^/(.*) $scheme://$host/ permanent;
}
Ref: http://rosslawley.co.uk/archive/old/2010/01/10/nginx-how-to-url-cleaning-removing/
попробуйте это:
merge_slashes off;
rewrite (.*)//+(.*) / permanent;
может быть несколько перенаправлений для косой черты > 3 или несколько групп косой черты.
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]