nginx重写最终进入错误的文件夹

nginx重写最终进入错误的文件夹,nginx,path,rewrite,Nginx,Path,Rewrite,我试图在nginx中设置一些重写规则来简化php-uri,但是 我似乎无法让它工作,我也找不到其他任何地方的答案。下面是一个简单的问题示例: 假设我在根文件夹中有一个文件test.html: <!DOCTYPE html> <html><body> Test <img src="img/image.jpg"> </body></html> 站点已加载,但服务器似乎以“错误”路径结束。无法显示图像,因为服务器正在/test/

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

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

<!DOCTYPE html>
<html><body>
Test
<img src="img/image.jpg">
</body></html>
站点已加载,但服务器似乎以“错误”路径结束。无法显示图像,因为服务器正在
/test/img/image.jpg
而不是
/img/image.jpg


感谢您的帮助。

您可能需要的是:

rewrite ^/test/$ /test.html last;
rewrite ^/test/(.*)$ /$1 last;
第一条规则将重定向
http://example.com/test/
到您的
test.html
文件。现在,
test.html
加载了新的基本路径,
/test
,html文件中定义的所有后续相对URL都将加载到此路径下,该路径包括
img/image.jpg
。这是正确的行为


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

您在html中有相对路径,浏览器将查找相对于当前路径的图像,这是/test/很好,谢谢!我只是想知道什么更好,这第二条规则用于解析相对路径,或者只是在第一位始终使用绝对路径。@Anton,绝对URL通常是最佳实践。
rewrite ^/test/$ /test.html last;
rewrite ^/test/(.*)$ /$1 last;