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

Как отдать файл с другим расширением, если не найден запрашиваемый?

Например, есть такой location
location /static/ {
        root /path/to/dir;
        expires 30d;
        access_log off;
    }


И приходит запрос: /static/my-doc.doc
Файла уже нет. Есть архив my-doc.zip
Как сделать так, чтобы nginx отдал my-doc.zip?
Если запрашиваемого файла нет, чтобы он искал файл с тем же именем, но с расширением zip.
  • Вопрос задан
  • 191 просмотр
Подписаться 1 Простой 2 комментария
Решения вопроса 2
paran0id
@paran0id
Умный, но ленивый
karabanov
@karabanov
Системный администратор
location /static/ {
  access_log off;
  expires 30d;
  root /path/to/dir;
  try_files $uri @zipped;
}

location @zipped {
  rewrite ^/static/(.*)\.(doc|docx|xls|xlsx)$ /static/$1.zip redirect;
}


Результат:
curl -IL https://example.com/static/test.doc

HTTP/2 302 
server: nginx
content-type: text/html
content-length: 138
location: https://example.com/static/test.zip

HTTP/2 200 
server: nginx
content-type: application/zip
content-length: 29
expires: Thu, 15 Dec 2022 18:31:20 GMT
accept-ranges: bytes

Регулярку можно поменять так, чтобы реагировало вообще на любое расширение, но это уж ты сам.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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