让我们说项目结构是这样的:
/
/public/assets/css/<css files go here>
/public/assets/js/<js files go here>
/public/assets/img/<image files go here>
/storage/assets/css/<css files go here>
/storage/assets/js/<js files go here>
/storage/assets/img/<image files go here>
/resources/assets/css/<css files go here>
/resources/assets/js/<js files go here>
/resources/assets/img/<image files go here>
我想将所有css和js资产请求重定向到/public/
,但以resources
或storage
例如此请求:/assets/css/style.css
必须重定向到:/public/assets/css/style.cc
但是,/storage/assets/css/style.cc
必须保持不变。
我正在尝试的是这样的事情:
RewriteRule ^![storage|resources](.*\.css)$ /public/$1 [L,R=302]
RewriteRule ^![storage|resources](.*\.js)$ /public/$1 [L,R=302]
我知道我在正则表达式中遗漏了一些东西。
有谁知道如何纠正它?
提前谢谢
答案 0 :(得分:1)
您走在正确的轨道上,非常接近解决方案,但您必须在RewriteCond
内应用您的条件:
RewriteCond %{REQUEST_URI} !^/?(storage|resources|public)
RewriteRule .*\.(css|js)$ /public/$0 [L,R=302]
否则你可以选择使用负前瞻的单行RewriteRule
来应用重定向规则:
RewriteRule ^(?!storage|resources|public).*\.(css|js)$ /public/$0 [L,R=302]