zoukankan      html  css  js  c++  java
  • Apache的htaccess文件出现500错误的原因

    Apache 我平时很少用到,今天测试环境下碰到个问题,老是500错误莫名其妙

    Apache的htaccess文件出现500错误的原因

      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^m/(.*)$ m.php/$1 [L]
      RewriteRule ^(.*)$ index.php/$1 [L]

    一开始这么些,感觉应该是正常的逻辑吧,m/ 开头的都到 m.php 去然后终止,其他为匹配到 m 的则去 index.php,结果发现直接500错误,崩溃怎么改都不行。

    然后郁闷的查看日志发现提示貌似重写进入死循环了。。。很是奇怪,感觉应该是规则的正则范围有问题

    AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if necessary. Use ‘LogLevel debug’ to get a backtrace.

    换了个新写法

      RewriteCond %{REQUEST_URI} ^/m/
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^m/(.*)$ m.php/$1 [L]
    
      RewriteCond %{REQUEST_URI} !^/m/
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^(.*)$ index.php/$1 [L]

    Apache的htaccess文件出现500错误的原因

    分成了两部分,增加个 URI 的匹配条件,明确分为两种条件,
    即:
    1. 以 /m/ 开头
    2. 不是以 /m/ 开头的

    这样明确正则范围终于ok了,

    结论,貌似 Apache 的 RewriteRule 中的正则规则是不能存在一条包含另一条的情况,必须每个规则明确,否则就会出现死循环或者正则递归过大的情况导致500错误

    附一个apache 规则转换到 nginx 的工具地址:
    http://www.anilcetin.com/convert-apache-htaccess-to-nginx/

  • 相关阅读:
    java-线程
    List、Map、set的加载因子,默认初始容量和扩容增量
    Mybatis使用generator自动生成映射配置文件信息
    Fiddler手机https抓包
    通知消息与ON_NOTIFY
    ATL实现COM组件
    vs参数配置
    QToolBox
    CTreeCtrl控件
    SQL-INSERT INTO用法
  • 原文地址:https://www.cnblogs.com/zhouzme/p/5758400.html
Copyright © 2011-2022 走看看