Nginx reescreve * .html para * .php

5

Eu configurei meu primeiro site do Nginx e as importantes reescritas estão concluídas. Eles precisavam ser manuais, nenhuma regra poderia ter lidado com isso, então tenho várias regras como essa para lidar com URLs antigas que podem ser indexadas ou marcadas como favoritos:

rewrite ^/html/Air_III.html /designers-elements-air permanent;

Há outro conjunto de arquivos estranhos que parecem receber tráfego, em partes do site que ainda não chegamos, então acabei de copiá-los. A maioria deles foi renomeada para .php do antigo .html e não é alterada, mas provavelmente há alguns que ainda são .html.

Estou procurando uma regra que manipule o caso de uma solicitação para qualquer arquivo .html, em qualquer diretório, que não corresponda realmente a um arquivo atual com esse nome e que ele seja reescrito para um arquivo .php se existe.

Em "Apache speak", isso seria um redirect permanent em vez de uma reescrita. Prefiro não rastrear tudo isso e fazê-lo manualmente!

    
por G. Armour Van Horn 24.02.2013 / 22:16

1 resposta

8

Você precisará de uma declaração if para verificar a existência e reescrever o arquivo adequadamente:

location ~ \.html$ {
    if (!-f $request_filename) {
        rewrite ^(.*)\.html$ $1.php permanent;
    }
}
    
por 26.02.2013 / 20:40

Tags