代码之家  ›  专栏  ›  技术社区  ›  DavidWinterbottom

如何使用mod ou rewrite检查静态文件的多个文件夹

  •  5
  • DavidWinterbottom  · 技术社区  · 14 年前

    检查给定文件多个文件夹位置的mod_重写规则是什么?例如,如果我的文件夹结构为:

    public/
        css/
        library1/
            css/
        library2/
            css/
    

    我想请求 /css/somefile.css 首先检查 public/css/ 目录,然后层叠到 public/library1/css/ 然后 public/library2/css/ ,如果在任何目录中都找不到资产,则返回404。

    我一直在想:

    RewriteCond %{SCRIPT_FILENAME} !-f
    RewriteCond library1%{REQUEST_URI} -f
    RewriteRule ^(.*)$ library1$1 [L]
    
    RewriteCond %{SCRIPT_FILENAME} !-f
    RewriteCond library2%{REQUEST_URI} -f
    RewriteRule ^(.*)$ library2$1 [L]
    

    但这似乎不起作用——我不知道如何检查动态生成路径上的文件是否存在。

    4 回复  |  直到 7 年前
        1
  •  6
  •   Gumbo    12 年前

    尝试以下规则:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{DOCUMENT_ROOT}/library1%{REQUEST_URI} -f
    RewriteRule ^css/.+ library1%{REQUEST_URI} [L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{DOCUMENT_ROOT}/library2%{REQUEST_URI} -f
    RewriteRule ^css/.+ library2%{REQUEST_URI} [L]
    
        2
  •  1
  •   mtmk    14 年前

    RewriteMap Directive 可能会有所帮助。

        3
  •  1
  •   Dan Andreatta    14 年前

    可能服务器变量不包含您的想法。尝试增加日志以进行调试,这样您就可以确切地看到正在发生的事情。

        4
  •  0
  •   Lucas Bustamante    7 年前

    试试这个:

    # Loads files from production server
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule (library1|library2)/(.*)$ http://production.com/$1/$2 [R=302,L,NC]
    

    要实现这一点:

    某物 图书馆1 /style.css->production.com/ 图书馆1 / 样式表 某物 图书馆2 / 供应商/css/style.css ->生产网站/ 图书馆2 / 供应商/css/style.css