由于一个长期存在的错误在 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
)。