.htaccess htaccess规则跳过文件和目录,但首先通过匹配前缀进行检查
我使用以下规则,如果已经提供了指向文件的路径,则跳过这些规则.htaccess htaccess规则跳过文件和目录,但首先通过匹配前缀进行检查,.htaccess,url-rewriting,.htaccess,Url Rewriting,我使用以下规则,如果已经提供了指向文件的路径,则跳过这些规则 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/
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'的形式访问它
显然这不起作用。有什么想法吗?就在这条规则之前:
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]
添加此规则:
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]
第一条规则(与-
一起通过)应该与存在的文件相匹配。因此,假设site.com/js/somfile.js
存在,它应该与第一条规则相匹配,并且在不重写的情况下通过。@JonLin文件存在于public
目录中,该目录不需要public@mrN:你的问题解决了吗?@anubhava,没有,你能帮我吗输出?所以实际文件是site.com/js/somfile.js
而不是site.com/public/js/somefile.js
?它被重定向到site.com/public/js
而且,每个请求都有一个public/
infront@mrN这里没有做任何重定向的东西,其他的东西在做,除了这个,没有其他htaccess文件s、 我的代码中没有重定向代码。