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/

目录
相关文章
|
1天前
|
easyexcel Java API
Apache POI与easyExcel:Excel文件导入导出的技术深度分析
Apache POI与easyExcel:Excel文件导入导出的技术深度分析
4 0
|
1月前
|
Java API Apache
使用 Apache PDFBox 操作PDF文件
Apache PDFBox库是一个开源的Java工具,专门用于处理PDF文档。它允许用户创建全新的PDF文件,编辑现有的PDF文档,以及从PDF文件中提取内容。此外,Apache PDFBox还提供了一些命令行实用工具。
180 6
|
1月前
使用apache.commons.io包快速实现将指定的内容写入文件
使用apache.commons.io包快速实现将指定的内容写入文件
|
1月前
|
XML JSON Apache
【Android】如何获得Apache服务器的JSON文件数据
【Android】如何获得Apache服务器的JSON文件数据
83 0
|
8月前
【apache-maven-3.5.4\conf\setting文件配置】
【apache-maven-3.5.4\conf\setting文件配置】
|
存储 监控 Apache
Apache ZooKeeper - ZK的数据和文件
Apache ZooKeeper - ZK的数据和文件
107 0
|
Apache
Apache配置文件httpd.conf/htaccess中deny和allow的使用
Apache配置文件httpd.conf/htaccess中deny和allow的使用
139 0
|
Apache Windows
Apache下htaccess文件不起作用/rewrite 没有效果
Apache下htaccess文件不起作用/rewrite 没有效果
269 0
Java:apache.poi读写Excel文件
Java:apache.poi读写Excel文件
302 0
|
JavaScript Apache
node.js案例——仿Apache显示文件目录
node.js案例——仿Apache显示文件目录
193 0
node.js案例——仿Apache显示文件目录