我的htaccess中有以下几行将css文件重写到另一个位置:
RewriteCond {REQUEST_FILENAME} !-f [NC] OR
RewriteCond {REQUEST_FILENAME} !-d [NC]
RewriteRule ^\\/?(.*)\.(css|js)$ public/$2/$1.$2 [L,NC,NE]
但是当网站尝试加载文件时,会出现配置错误的错误。实际问题是1美元到2美元之间的点。我认为当服务器找到该文件时,它会进入无限循环。
是否有人知道该错误的原因?
答案 0 :(得分:2)
自从我查看其中一些语法以来已经有一段时间了,但我认为OR
会在括号内。那就是说,这是你问题的一部分;你需要两个RewriteCond
条件都是真的。此外,您需要实际存在的文件;如果找不到该文件,则无论如何都将进入无限循环。另一种方法可能是:
RewriteRule ^public/(css|js)/ - [NC,L]
在RewriteCond
指令之前,以便public/css
或public/js
中的任何内容都不会被重写,无论它是否存在。
此外,在每个目录上下文(即.htaccess)中,RewriteRule
匹配的值不以斜杠开头。这不会导致你的问题,但它可以节省你几个字符,让你的正则表达式更容易阅读。
答案 1 :(得分:2)
像这样编写规则以避免无限循环:
RewriteRule ^(?!public/)(.*)\.(css|js)$ public/$2/$1.$2 [L,NC]
向前看负面会阻止无限循环。
答案 2 :(得分:0)
它进入无限循环,因为您重定向的目录也满足正则表达式。