Как сделать, чтобы 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.