Задать вопрос
@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.
  • Вопрос задан
  • 197 просмотров
Подписаться 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

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

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

Похожие вопросы
YCLIENTS Москва
от 350 000 до 400 000 ₽
Viletech Москва
от 70 000 до 120 000 ₽
Data World Москва
от 180 000 до 210 000 ₽