博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Apache的htaccess文件出现500错误的原因
阅读量:7100 次
发布时间:2019-06-28

本文共 1004 字,大约阅读时间需要 3 分钟。

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 的工具地址:

你可能感兴趣的文章
浅谈finally使用坑。
查看>>
Python协程深入理解
查看>>
[置顶] Jquery之ShowLoading遮罩组件
查看>>
ACE 格式化输出到console
查看>>
Skype For Business Server 2015 离线消息
查看>>
js 获取checkbox选中项目
查看>>
VC6使用技巧
查看>>
pdf文档如何转换成txt文档
查看>>
DELL32位诊断工具PEDIAGS使用
查看>>
产品经理的麻烦地图
查看>>
如何通过刷百度指数来提高网站的权重
查看>>
轻量级HTTP服务器Nginx(常用配置实例)
查看>>
FAT32文件系统
查看>>
Mysql存储过程分析
查看>>
文件系统权限 -- 学习笔记
查看>>
windows2008域上装oracle10gR2
查看>>
mac终端命令大全介绍(稍加整理)
查看>>
web虚拟键盘VirtualKeyboard
查看>>
我的友情链接
查看>>
安装独立根CA(2)
查看>>