【问题标题】:nginx rewrite ends up in wrong foldernginx rewrite 最终在错误的文件夹中
【发布时间】:2015-02-01 15:59:31
【问题描述】:

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

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

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

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

有了这条规则

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

网站已加载,但服务器似乎以“错误”路径结束。图片无法显示,因为服务器在/test/img/image.jpg而不是/img/image.jpg寻找它

任何帮助表示赞赏。

【问题讨论】:

  • 您在 html 中有相对路径,浏览器会查找相对于当前路径的图像,即 /test/

标签: nginx path rewrite


【解决方案1】:

你可能想要的是:

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

【讨论】:

  • 太好了,谢谢!我只是想知道什么更好,第二条规则是解决相对路径,或者首先总是使用绝对路径。
  • @Anton,绝对 URL 通常是最佳做法。
猜你喜欢
  • 1970-01-01
  • 2012-05-28
  • 1970-01-01
  • 2019-02-07
  • 2015-09-01
  • 2015-09-02
  • 2010-11-21
  • 2014-04-26
  • 2014-04-18
相关资源
最近更新 更多