Задать вопрос
@Bega

Location в nginx для алиас, как настроить правильно?

Добрый есть проблема, прописан location.
location /test/ {
alias /usr/share/folder/;
index index.php;

При октрытии этого алиас
example.com/test
срабатывает 404, но если написать
example.com/test/
работает
Как настроить правильно, чтобы и example.com/test открывался index.php
Не предлагайте в location убрать слеш на конце, т.к это не безопасно и дает лазейки в виде возможности прыгать директорию выше чем /folder
  • Вопрос задан
  • 222 просмотра
Подписаться 1 Простой 4 комментария
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Проще всего добавить ещё один location
location = /test {
    return 302 /test/;
    # или 301
}


«Магия» с редиректом /path → /path/ работает только если запрос внутри location обрабатывается одной из *_pass директив.


nginx.org/ru/docs/http/ngx_http_core_module.html#l...
[...]
Если location задан префиксной строкой со слэшом в конце и запросы обрабатываются при помощи proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass, memcached_pass или grpc_pass, происходит специальная обработка. В ответ на запрос с URI равным этой строке, но без завершающего слэша, будет возвращено постоянное перенаправление с кодом 301 на URI с добавленным в конец слэшом.
[...]


В вашем конфиге обработка запроса происходит не в location /test/, а в location ~ \.php$ (хоть он и вложен в предыдущий) поэтому «магического» редиректа нет и надо сделать его самостоятельно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы