用于检查给定文件的多个文件夹位置的mod_Rewrite规则是什么。例如,如果我有一个文件夹结构:
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]
但这似乎不起作用 - 我不确定如何在动态生成的路径上检查文件是否存在。
答案 0 :(得分:6)
请尝试以下规则:
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]
答案 1 :(得分:1)
RewriteMap Directive可能会有所帮助。
答案 2 :(得分:1)
服务器变量可能不包含您的想法。尝试将日志记录增加到调试,这样您就可以确切地看到正在发生的事情。
答案 3 :(得分:0)
试试这个:
# 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]
实现这一目标:
something.dev/ library1 /style.css - > production.com/library1 / 的style.css something.dev/library2 / vendor / css / style.css - > production.com/library2 / 供应商/ CSS / style.css中