Назад | Перейти на главную страницу

nginx продолжает добавлять слэш в конце

Я хочу создать псевдоним «статической» папки:

location ~ ^/myapp/([a-zA-Z0-9_-]+)/ {
    alias /var/lib/myapp/$1/static/;
    autoindex on;
}

Но если у меня есть URL:

https: //mydomain/myapp/section1/page.html

Меня перенаправляют на:

https: //mydomain/myapp/section1/page.html/

что вызывает ошибку 404.

Если я получу доступ:

https: // mydomain / myapp / section1 /

Я могу правильно видеть список всех файлов html (из-за "автоиндексирования").

Однако, если у меня есть такая конфигурация:

location /myapp/ {
    alias /var/lib/myapp/;
    autoindex on;
}

nginx НЕ добавляет завершающую косую черту, поэтому я могу правильно получить доступ к страницам .html. Проблема с этой конфигурацией в том, что "static /" должен быть включен в URL-адрес, например:

https: //mydomain/myapp/section1/static/page.html

Как я могу заставить nginx НЕ добавлять завершающую косую черту в первом примере выше?

An alias в пределах регулярное выражение location Для блока требуется значение, указывающее полный путь к целевому файлу. Вам нужно захватить оставшуюся часть URI в location заявление и добавьте его в конец alias заявление.

Например:

location ~ ^/myapp/([a-zA-Z0-9_-]+)/(.*)$ {
    alias /var/lib/myapp/$1/static/$2;
    autoindex on;
}

Видеть этот документ для подробностей.