我想使用子目录中的文件来满足任何请求。示例:
浏览器请求localhost / style.css,
服务器从localhost / static / style.css响应(无需重定向浏览器!)
使用以下.htacess文件可以完美地工作:
RewriteEngine on
RewriteRule ^(.{0,10})$ static/$1
但是当我这样做
RewriteEngine on
RewriteRule ^(.+)$ static/$1
失败,并显示“内部服务器错误”。
答案 0 :(得分:-1)
/var/log/apache2/error.log
说过
请求超出了10个内部重定向的限制
我猜它正在从style.css
重定向到static/style.css
,然后重定向到static/static/style.css
,依此类推。解决方案是使用:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/static/
RewriteRule ^(.+)$ static/$1
当URL以static /
开头时,RewriteCond行阻止下一个RewriteRule重定向。这在这里也很有帮助:https://stackoverflow.com/a/6800150/4417769
htacess在重定向后再次遍历规则,因此它被递归应用,[L]无法停止它。
另一个解决方案是
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/static/%{REQUEST_URI} -f
RewriteRule ^(.+)$ static/$1
仅当重定向后的网址与存在的文件匹配时才重定向