apachehtaccess从一个目录或另一个目录加载文件

apachehtaccess从一个目录或另一个目录加载文件,apache,mod-rewrite,Apache,Mod Rewrite,我的目标是,如果在第一个目录中找不到请求的文件,让Apache第二次重写URL 现在我有下面的Apache重写,非常好用 RewriteRule ^[^/]*/scripts(.+) scripts$1 这会使所有域的所有JavaScript文件请求访问以下目录中的文件 www/scripts/ 我的目录/文件结构 万维网/ www/scripts/ www/www.example.com/ www/www.example.com/scripts/ 我需要做的是,如果请求的文件不在此目录中

我的目标是,如果在第一个目录中找不到请求的文件,让Apache第二次重写URL

现在我有下面的Apache重写,非常好用

RewriteRule ^[^/]*/scripts(.+) scripts$1
这会使所有域的所有JavaScript文件请求访问以下目录中的文件

www/scripts/


我的目录/文件结构

万维网/

www/scripts/

www/www.example.com/

www/www.example.com/scripts/

我需要做的是,如果请求的文件不在此目录中

www/www.example.com/scripts/

…然后让Apache在该目录中查找

www/scripts/


这是用于localhost本地开发的,因此请求URL看起来像

http://localhost/www.example.com/scripts/index.js


这是我一直在修补的一个例子

RewriteCond %{REQUEST_FILENAME} (.*)\/scripts\/\.(js)$
RewriteCond ^[^/]*scripts$2 -f
RewriteRule ^[^/]*/scripts(.+) scripts$2[L]

只是希望能让你更接近一个解决方案。以下是我未经验证的想法:

# check if we're looking for a script in that directory
RewriteCond %{REQUEST_FILENAME} www\/www\.example\.com\/scripts\/(.*)\.js$

# check if that file DOESN'T exist
RewriteCond www\/www\.example\.com\/scripts\/%1\.js !-f

# it doesn't exist - so try to rewrite that file to www/scripts
RewriteRule www\/www\.example\.com\/scripts\/(.+)\.js$ www/scripts/$1.js

祝你好运

RewriteCond%{REQUEST\u FILENAME}(.*)\/scripts\/\.(js)$似乎在寻找*/scripts/.js-文件名中没有任何内容?@mikevoermans经过一周不停的修补,我可能偶然发现了答案;不过,您的代码片段看起来更符合目标,谢谢!这并不是一个答案,对不起,我没有测试任何东西,只是认为你的正则表达式不存在。这是你一直在修补的代码的副本