Как сделать, чтобы nginx переназначил часть URL, не отправляя перенаправление?

У меня есть картинки на пути, выглядящие так:

/0/1/2/3/4/01234/screenshots/1.jpg

URL для доступа выглядит так:

/static/0/1/2/3/4/01234/screenshots/1.jpg

Я хотел бы, чтобы это выглядело так:

/0/1/2/3/4/01234/a-desc-of-the-picture/screenshots/1.jpg

Или что-то подобное. Цель состоит в том, чтобы ключевые слова в URL для SEO.

Но хотел бы сказать nginx, чтобы служить

/0/1/2/3/4/01234/screenshots/1.jpg

Когда он видит:

/0/1/2/3/4/01234/a-desc-of-the-picture/screenshots/1.jpg

Я не хочу, чтобы он перенаправлял пользователя на правильный URL, я просто хочу, чтобы он выполнял сопоставление внутри.

Является ли это возможным? Как мне этого добиться?

Я видел нечто подобное здесь, но я не могу найти способ применить это в моем случае. Что-то дружелюбное noob будет высоко ценится.

1 ответ

Решение

Предполагая, что у вас есть базовый путь, который можно переопределить, вы можете сделать что-то вроде:

location ~ ^/static/(././././.....)/[^/]+/(.*)$ {
    alias /location/on/filesystem/$1/$2;
}

Директива псевдонима Nginx более гибкая, чем аналог Apache.

Другие вопросы по тегам