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

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

0818b9ca8b590ca3270a3433284dd417.png

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]

0818b9ca8b590ca3270a3433284dd417.png

分成了两部分,增加个 URI 的匹配条件,明确分为两种条件,

即:

1. 以 /m/ 开头

2. 不是以 /m/ 开头的

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值