Como posso me locomover usando o alias no nginx?

6

Devido a um erro de longa data no nginx eu estava aconselhado para mudar minha diretiva de alias com uma diretiva raiz. Infelizmente isso agora quebra meus arquivos estáticos, que estão localizados em um diretório diferente do caminho do meu site ( mysite.com/blog - > /var/www/mysite/wordpress ). Como posso contornar isso, sem alterar minha estrutura de arquivos estáticos? Aqui está o meu bloco completo de localização:

location /blog {
    root /var/www/mysite/wordpress;
    try_files $uri $uri/ /blog/index.php$is_args$args;

    location ~ \.php {
        fastcgi_pass 127.0.0.1:9000;
        include fastcgi_params;
        fastcgi_split_path_info ^(?:\/blog\/)(.+\.php)(.*);
        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    }
}
    
por Jonathan 06.11.2014 / 21:45

1 resposta

10

Reescreva o URI:

location /blog {

    root /var/www/mysite/wordpress;
    rewrite ^/blog/([^.]+\.[^.]+)$ /$1 break;
    try_files $uri $uri/ /blog/index.php$is_args$args;

    location ~ \.php {
        fastcgi_pass 127.0.0.1:9000;
        include fastcgi_params;
        fastcgi_split_path_info ^(?:\/blog\/)(.+\.php)(.*);
        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    }

}

Isso removerá a parte /blog do URI de URIs contendo um possível sufixo de arquivo ( something.something ).

    
por 06.11.2014 / 21:49