nginx rewrite 或 try_files 问题

2015-10-25 17:08:09 +08:00
 guofeng1208

有一个通过 jekyll 生成的博客放在路径 A, 并且生成的 html 都以 A 作为根目录"/"引用.
我将 A 在 nginx 的网站主目录中软链接名为 blog.

问题来了, 当我打开 "127.0.0.1/blog" 的时候, 博客的 index.html 可以加载, 但是其中引用的路径名为 "/XXX.css" 的资源全部 404 了.

我清楚问题是处在 "/XXX.css" 是以 A 为根目录的路径而非 nginx 的工作目录.

怎样通过 rewrite 或 try_files 解决?

3326 次点击
所在节点    NGINX
4 条回复
wql
2015-10-25 17:12:18 +08:00
设置一个回到根目录的符号连接,假设为 css
try_files $uri /css$uri =404
guofeng1208
2015-10-25 17:23:28 +08:00
@wql 嗯, 这个方法我考虑过. 只是假如 blog 下面有个 XX.html, 以后另一个非 blog 子目录也有同名页面 XX.html, 那么子目录多了以后感觉这种方法不太合适, 因为优先顺序可能不好确定.

所以我想, 浏览 127.0.0.1/blog 的时候, 根据网址中 "/blog" 路径判断应该读取 A 目录下资源, 不清楚这个应该怎么实现?
wql
2015-10-25 17:28:15 +08:00
@guofeng1208
太麻烦了,其实不如直接把 css 放在 blog 的下级子目录里,按照 127.0.0.1/blog/css/XXX.css 来引用。毕竟 jekyll ,可以改模版。
LazyZhu
2015-10-25 17:36:43 +08:00
不只 rewrite, alias 也可以解决啊
location ~ ^/(.+\.css)$ {
alias /path/to/blog/$1;
}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/230953

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX