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

Как заставить 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-адрес, я просто хочу, чтобы он выполнял внутреннее сопоставление.

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

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

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

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

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