Regex 为什么这个htaccess正则表达式会有3个或更多周期失败?
为什么这个正则表达式会失败 目标是重写:Regex 为什么这个htaccess正则表达式会有3个或更多周期失败?,regex,apache,.htaccess,Regex,Apache,.htaccess,为什么这个正则表达式会失败 目标是重写: http://example.com/Almost-Anything-Here/381 -->/lv.php?id=381&%{QUERY\u STRING} 请注意,我忽略了URL中的文本,只是尝试获取数字(在本例中为381),然后将其传递到lv.php 规则如下: RewriteRule^[/]?[A-Za-z0-9\-\-\(\.)*]+/([0-9]+)$/lv.php?id=$1&%{QUERY\u STRING}[L] 如果有0个、1个或2个
http://example.com/Almost-Anything-Here/381
-->/lv.php?id=381&%{QUERY\u STRING}
请注意,我忽略了URL中的文本,只是尝试获取数字(在本例中为381),然后将其传递到lv.php
规则如下:
RewriteRule^[/]?[A-Za-z0-9\-\-\(\.)*]+/([0-9]+)$/lv.php?id=$1&%{QUERY\u STRING}[L]
如果有0个、1个或2个周期,它可以工作,但失败(使用HTTP 500)3个或更多周期。为什么?我尝试了几种在正则表达式中逃避/捕获周期的方法,但没有成功
示例测试URL:
- 作品:
http://example.com/Great/381
- 作品:
http://example.com/Great./381
- 作品:
http://example.com/Great../381
- 失败:
http://example.com/Great.../381
访问被拒绝,代码为500。模式匹配“\\\.\\.\\\.\\\./”在请求时\u URI。[msg“虚假路径被拒绝”][hostname“www.example.com”][uri//太好了…/381”]
我确信您的Apache web服务器已安装并包含如下安全配置:
#generic bogus path sigs
SecRule REQUEST_URI "\.\.\./" "id:300006,rev:1,severity:2,msg:'Bogus Path denied'"
有一些,但通常情况下,mod_安全性的实现是有原因的。你能检查一下HTTP 500的日志吗?谢谢@Thefourthbird,这提供了一个巨大的线索……不确定它是否有用,但我认为你不必在字符类中逃避点
。
。使用xampp
没有问题,您的htaccess中是否有RewriteBase/
如果您使用RewriteRule^.*/([0-9]+)/?$/lv.php呢?id=$1[QSA,L]
?据我所知,这是ModSecurity 2.x中的默认规则之一。然而,我在3.x的规则中找不到它-但可能我看错了位置。谢谢你的回复,看起来很可能是这个罪犯!这就引出了一个问题,为什么这条规则存在于mod_security中,我需要保留它吗?我可以从mod_security config中删除它吗?@Eric我不能给出一个明确的答案,但可以说SecRule更像是一个健全的检查,而不是一个真正的安全保护。可能值得在webmasters.stackexchange.com或security.stackexchange上询问。com@Eric可以说,如果这条规则妨碍了你,它应该被删除。我在这里发现了一个事件,该规则阻止了vbulletion用户:下面是该规则的描述及其原理:在任何操作系统中都没有这样的有效路径
感谢您的帮助和研究!我认为你的回答是最好的。非常感谢。