Apache的htaccess文件出现500错误的原因
Apache 我平时很少用到,今天测试环境下碰到个问题,老是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]
分成了两部分,增加个 URI 的匹配条件,明确分为两种条件,
即:
1. 以 /m/ 开头
2. 不是以 /m/ 开头的
这样明确正则范围终于ok了,
结论,貌似 Apache 的 RewriteRule 中的正则规则是不能存在一条包含另一条的情况,必须每个规则明确,否则就会出现死循环或者正则递归过大的情况导致500错误
附一个apache 规则转换到 nginx 的工具地址:
http://www.anilcetin.com/convert-apache-htaccess-to-nginx/
Apache的htaccess文件出现500错误的原因的更多相关文章
- mac下为Apache 创建 .htaccess文件
标签:mac .htaccess 在设置固定链接时会提示如下的问题: 若您的 .htaccess 文件可写,我们可以自动修改它.但似乎它不可写,因此我们在下方列出了您 .htaccess 文件 ...
- Apache 中 .htaccess 文件设置技巧16则
.htaccess 文件 (Hypertext Access file) 是Apache Web服务器的一个非常强大的配置文件,对于这个文件,Apache有一堆参数可以让你配置出几乎随心所欲的功能.. ...
- apache的 .htaccess文件的常用配置
使用.htaccess文件需要注意的地方: 1.找到配置文件httpd.conf,将override的值改成all.如下图:(如果不设置成all,apache将忽略.htaccess文件)
- 让apache支持htaccess文件
第一:检测 apache是否开启mod_rewrite 通过php提供的phpinfo()函数查看环境配置,在"apache2handler -> Loaded Modules&quo ...
- php上传文件出现500错误
问题: 能上传小于10k的文件,上传大于10k的文件就会报500错误 解决办法: 首先查看错误日志,看看报错是什么 其次查看client_body_temp的权限问题 关于client_body_te ...
- 【Web应用】JAVA网络上传大文件报500错误
问题描述 当通过 JAVA 网站上传大文件,会报 500 错误. 问题分析 因为 Azure 的 Java 网站都是基于 IIS 转发的,所以我们需要关注 IIS 的文件上传限制以及 requestT ...
- apache的.htaccess文件作用和相关配置
首先.htaccess什么? .htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令. 当我们使用apache部署一个网站代码准备部署到网上的时候,我们手中的apache的h ...
- apache使用.htaccess文件中RewriteRule重定向后,URL中的加号无法解析
今天在使用.htaccess做伪静态的时候,发生一件怪事,URL里存在C++时会有问题,在处理C++这个词的时候,无论如何,$_GET都得不到++,只能得到C空格. 一开始我以为是没用urlencod ...
- springboot上传文件时500错误,提示临时目录无效
org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nes ...
随机推荐
- Android学习路径——Android的四个组成部分activity(一)
一.什么是Activity? Activity简单的说就是一个接口.我们是Android手机上看到的每个界面就是一个activity. 二.Activity的创建 1.定义一个类继承activity, ...
- ACE模板之Jqgrid
Asp.Net MVC中使用ACE模板之Jqgrid 第一次看到ACE模板,有种感动,有种相见恨晚的感觉,于是迅速来研究.它本身是基于bootstrap和jqueryui,但更nice,整合之后为 ...
- VS2012下systemC配置
一.编译System库 1.下载SystemC library source code 到http://www.systemc.org注册会员账号后,即可下载SystemC ...
- 最短路径 dijkstra
最短路径 dijkstra #include <stdio.h> #include <string.h> #include <limits.h> #define M ...
- 【ios开发】ios开发问题集锦
1. ARC forbids explicit message send of'release' 'release' is unavailable: not available inautomatic ...
- c# 服务程序重启自身
由于工作有这样的需求,于是各种寻找,但是都不满意,偶然间想起一个方法 1.修改服务的Program.cs文件如下 static void Main(string[] args) { //LoadFil ...
- Orchard中的Host和Tenant
Orchard的多个子站点特性 Orchard中可以支持多个子站点.当你运行Orchard的时候,通常一个网站运行在一个应用程序域中.这也是一般ASP.NET应用程序区分两个网站的方法,也就是说两 ...
- C#获取友好时间差
/// <summary> /// 获取时间差 /// </summary> /// <param name="dtOld">要减的时间< ...
- [RM 状态机详解3]RMContainer状态机详解
摘要 RMContainer是RM内部维护的Container状态.事实上,在RM的调度器中,会维护着一个liveContainers列表,保存着所有存活着的Container信息.图1显示RMCon ...
- C++11标准后的C++阅读书目
C++11标准后的C++阅读书目 投递人 itwriter 发布于 2013-09-25 19:44 评论(2) 有285人阅读 原文链接 [收藏] « » 英文原文:C++ Reading L ...