V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
guofeng1208
V2EX  ›  NGINX

nginx rewrite 或 try_files 问题

  •  
  •   guofeng1208 · 2015-10-25 17:08:09 +08:00 · 3304 次点击
    这是一个创建于 3298 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    怎样通过 rewrite 或 try_files 解决?

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

    所以我想, 浏览 127.0.0.1/blog 的时候, 根据网址中 "/blog" 路径判断应该读取 A 目录下资源, 不清楚这个应该怎么实现?
    wql
        3
    wql  
       2015-10-25 17:28:15 +08:00 via Android
    @guofeng1208
    太麻烦了,其实不如直接把 css 放在 blog 的下级子目录里,按照 127.0.0.1/blog/css/XXX.css 来引用。毕竟 jekyll ,可以改模版。
    LazyZhu
        4
    LazyZhu  
       2015-10-25 17:36:43 +08:00
    不只 rewrite, alias 也可以解决啊
    location ~ ^/(.+\.css)$ {
    alias /path/to/blog/$1;
    }
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3608 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 04:26 · PVG 12:26 · LAX 20:26 · JFK 23:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.