我正在使用以下规则,如果已提供路径,则会跳过文件。
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^$ public/index.php [NC,L]
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.+)$ public/index.php?r=$1 [L,QSA]
但这使我能够访问site.com/public/js/somefile.js
这样的文件,而不是意图。
我们可以检查文件是否存在于目录中并重写URL以便以“site.com/js/somfile.js”的形式访问它
RewriteCond %{REQUEST_FILENAME} -"public/"f
RewriteRule ^ - [L]
Obvioulsy这不起作用。有什么想法吗?
答案 0 :(得分:0)
在此规则之前:
RewriteRule ^$ public/index.php [NC,L]
添加此规则:
RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -d
RewriteRule ^(.+)$ /public/$1 [L]