我有一个包含两个目录的Web项目:" core"和"公共"。
"核心"包含Model-View-Controller所需的所有控制器,视图和文件。
"公共"包含可以直接访问的所有公共文件,如js,css和less。
我在主目录中有以下.htaccess
:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !(\.png|\.jpg|\.gif|\.jpeg|\.bmp|\.css|\.js|\.less|\.coffee)$
RewriteRule ^$ core/ [L]
RewriteRule (.*) core/$1 [L]
</IfModule>
但是,它仍会将这些文件重写为核心&#39; 。目录
我做错了什么?
答案 0 :(得分:1)
我建议你改用它:
RewriteEngine on
# First, check if a specific type is being requested
RewriteCond %{REQUEST_URI} !\.(png|jpg|gif|jpeg|bmp|css|js|less|coffee)$ [NC]
# Second, check if the request is for an existing file
RewriteCond %{REQUEST_FILENAME} -f
# If both conditions are true, then skip rewriting
RewriteRule ^ - [L]
# Otherwise, continue:
RewriteRule ^$ core/ [L]
RewriteRule (.+) core/$1 [L]
将资产发送到core
的原因是因为条件仅适用于第一条规则,即适用于您的应用程序索引的规则。如果正在请求资产,则使用此方法会导致mod_rewrite
跳过重写。一旦它这样做,它可以继续所有其他规则。