Re: Nginx редиректит (301) с добавлением слэша
Maxim Dounin
mdounin at mdounin.ru
Wed Jun 26 07:50:45 UTC 2013
Hello!
On Wed, Jun 26, 2013 at 03:33:19AM -0400, wilful wrote:
> Спасибо за ответы. Привожу пример всего конфига. Бакэнд в данном случа я
> отключил вообще (в первом сообщении 404 это ошибка о том, что не найден
> индекс заглушки, но редирект происходит раньше)
[...]
> В апач есть директива отключения таких редиректов, как можно поступить в
> случае nginx, чтобы обработка папки передавалась на бакэнд?
Нужно явно обрабатывать запросы к каталогам без "/" на конце.
Например как-то так можно передать обработку всех каталогов на
бекенд:
location / {
# only _files_ are handled here, directories and
# non-existent uris will go to @directory location
try_files $uri @directory;
}
location @directory {
try_files $uri/ =404;
proxy_pass http://backend;
}
А если к вышеприведённому конфигу ещё добавить что-нибудь вроде
location ~ /$ {
# if an uri ends with "/", handle it here
}
то на бекенд уйдут только запросы к каталогам без "/" на конце.
Алтернативные варианты конфигураций можно поискать в архивах
рассылки, ключевые слова - trailing slash redirect.
> Если использовать error_page 404 @fetch; вместо try_files, то всё равно
> происходит редирект.
Директива try_files не имеет отношения к редиректу. В вашем
исходном конфиге директива try_files лишь обеспечивала обработку
существующих каталогов модулем static nginx'а.
--
Maxim Dounin
http://nginx.org/en/donation.html
Подробная информация о списке рассылки nginx-ru