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
中的所有相对路径解析为相对于其基本目录 /
.
我试图在 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
中的所有相对路径解析为相对于其基本目录 /
.