0

如果已经提供了文件的路径,我正在使用以下规则跳过文件。

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]

显然这没有用。有任何想法吗?

4

1 回答 1

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]
于 2013-10-05T02:12:56.160 回答