Como fazer o nginx remapear uma parte da URL sem enviar um redirecionamento?

2

Eu tenho fotos em um caminho com esta aparência:

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

O URL para acessá-lo é assim:

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

Eu gostaria que fosse assim:

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

Ou algo similar. O objetivo é ter as palavras-chave no URL para SEO.

Mas gostaria de dizer ao nginx para servir

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

Quando ele vê:

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

Eu não quero que ele redirecione o usuário para a URL correta, apenas quero que ele faça o mapeamento internamente.

É possível? Como posso conseguir isso?

Eu vi algo semelhante aqui , mas não consigo encontrar um maneira de aplicá-lo ao meu caso. Algo noob amigável seria muito apreciado.

    
por e-satis 18.07.2011 / 12:04

1 resposta

4

Supondo que você tenha um caminho base que seja regexable, você pode fazer algo como:

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

A diretiva de alias do Nginx é mais flexível do que o equivalente do Apache.

    
por 18.07.2011 / 12:27