代码之家  ›  专栏  ›  技术社区  ›  sezanzeb

htacess,.{0,10}有效,.+不适用于重定向,给出错误500

  •  -1
  • sezanzeb  · 技术社区  · 5 年前

    浏览器请求localhost/style.css,

    服务器响应(不重定向浏览器!)来自localhost/static/style.css

    使用以下.htaccess文件可以完美地工作:

    RewriteEngine on
    RewriteRule ^(.{0,10})$ static/$1
    

    RewriteEngine on
    RewriteRule ^(.+)$ static/$1
    

    1 回复  |  直到 5 年前
        1
  •  -1
  •   sezanzeb    5 年前

    /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