Opened 8 years ago
Last modified 8 years ago
#1058 accepted defect
недокументированный редирект?
Reported by: | Owned by: | ||
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | documentation | Version: | 1.11.x |
Keywords: | Cc: | ||
uname -a: | Linux vid1 2.6.16.21-0.8-bigsmp #1 SMP Mon Jul 3 18:25:39 UTC 2006 i686 i686 i386 GNU/Linux | ||
nginx -V: |
nginx version: nginx/1.11.3
built by gcc 4.1.0 (SUSE Linux) configure arguments: --prefix=/www/nginx/ --pid-path=/www/nginx.pid --lock-path=/www/nginx.lock --user=nginx |
Description
при запросе URL без концевого слэша всегда происходит 301 редирект на тот же URL со слэшем в конце
пример конфига:
location /dir {
alias /www/dir;
}
тоже самое происходит и в таком варианте:
location /dir/ {
alias /www/dir/;
}
Однако, в документации такое поведение, вроде бы, описано только для локэйшнов с *_pass, либо я не там искал, но нашёл я только вот это:
Если location задан префиксной строкой со слэшом в конце и запросы обрабатываются при помощи proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass или memcached_pass, происходит специальная обработка. В ответ на запрос с URI равным этой строке, но без завершающего слэша, будет возвращено постоянное перенаправление с кодом 301 на URI с добавленным в конец слэшом.
пример готовой конфигурации
location /ig {
alias /www/ig_build;
}
$curl -I http://localhost:90/ig/infografika
HTTP/1.1 301 Moved Permanently
Server: nginx/1.11.3
Date: Wed, 24 Aug 2016 09:52:10 GMT
Content-Type: text/html
Content-Length: 185
Location: http://localhost:90/ig/infografika/
Connection: keep-alive
Также проверял на версии 1.4.2, всё тоже самое.
Если директории нет - то сразу возвращает 404, но если она есть, а запрос был без слэша - возникает редирект.
Change History (1)
comment:1 by , 8 years ago
Component: | other → documentation |
---|---|
Status: | new → accepted |
Да, судя по всему в документации это явно нигде на описано - просто потому, что поведение считается очевидным. Видимо, стоит явно описать.
Это называется "trailing slash redirect" или "directory redirect" и является стандартным поведением веб-серверов при обращении к директории, если в запросе отсутствует завершающий слэш.
Собственно, описанное поведение для локаций со слэшом в конце при использовании proxy_pass - суть эмуляция этого стандартного поведения для случаев, когда доступа к файловой системе nginx не имеет, а логика работы, аналогичная наличию директории, предполагается конфигурацией.