我怎样才能避免使用 nginx 中的别名?

我怎样才能避免使用 nginx 中的别名?

由于一个长期存在的错误在 nginx 中建议将我的别名指令切换为根指令。不幸的是,这现在破坏了我的静态文件,这些文件位于与我的站点路径不同的目录中(mysite.com/blog-> /var/www/mysite/wordpress)。我该如何解决这个问题,而不改变我的静态文件结构?这是我的完整位置块:

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;
    }
}

答案1

重写 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;
    }

}

这将删除/blog包含潜在文件后缀的 URI 部分 ( something.something)。

相关内容