nginx 重写最终出现在错误的文件夹中

nginx rewrite ends up in wrong folder

我试图在 nginx 中设置一些重写规则来简化 php uris,但是 我似乎无法让它工作,我也无法在其他任何地方找到答案。这是问题的一个简单示例:

假设我在根文件夹中有一个文件 test.html

<!DOCTYPE html>
<html><body>
Test
<img src="img/image.jpg">
</body></html>

我想要做的就是像 http://example.com/test/ 这样的 url 会显示 html 页面。

有了这条规则

rewrite ^/test/$ /test.html last;

站点已加载,但服务器似乎最终位于 'wrong' 路径中。图片无法显示,因为服务器正在 /test/img/image.jpg 而不是 /img/image.jpg

寻找它

感谢任何帮助。

您可能想要的是:

rewrite ^/test/$ /test.html last;
rewrite ^/test/(.*)$ / last;

第一条规则将 http://example.com/test/ 重定向到您的 test.html 文件。现在 test.html 使用新的基本路径 /test 加载,HTML 文件中定义的所有后续相对 URL 都将加载到此路径下,其中包括 img/image.jpg。这是正确的行为。

我添加的第二行将 test.html 中的所有相对路径解析为相对于其基本目录 /.