Nginx Mod Rewrite - Reescreva * .png até * .php

3

Estou tendo um problema com o Nginx Rewrites

Atualmente, minha regra é a vista abaixo

reescreva ^ / i /(.*?)$ /i/$1.php por último;

Basicamente, o que eu quero fazer é redirecionar todos os arquivos .png para .php dentro do diretório / i. No entanto, parece que o $ tem que ser no final, então eu não posso fazer

reescreva ^ / i /(.*?)$. png /i/$1.php por último;

Alguém tem alguma solução?

Obrigado Ben

    
por Ben 03.08.2012 / 22:47

2 respostas

3

Solicitações de arquivos .png estão sendo manipuladas pelo seu location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ . Apenas pare com isso ao manipular arquivos png e adicione um novo local que apenas os manipule:

server {
  location ~* \.(js|css|jpg|jpeg|gif|ico)$ {
    # the same stuff you already had in here
  }

  location ~* ^(?<basename>.*)\.png$ {
    rewrite ^ $basename.php last;
  }

  # your other locations
}
    
por 04.08.2012 / 02:53
0

Ah, agora vejo o problema.

Sua regra de regravação é assim:

rewrite ^/i/(.*?)$ /i/$1.php last;

Isso reescreveria /i/cute.png a /i/cute.png.php . Provavelmente não existe.

Você disse que simplesmente queria alterar .png para .php , então tente algo assim:

rewrite ^/i/(.*?).png$ /i/$1.php last;
    
por 03.08.2012 / 23:13