8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

AH10411 错误:空格和 %20 导致 Apache mod_rewrite 出现 403 禁止访问

Edric 2月前

80 0

我今天更新了 Apache(至 2.4.56-1),以前可以正常工作的大量 .htaccess 重写现在出现 AH10411 错误,与查询中的空格有关。我正在寻找“正确”的解决方案……

我今天更新了 Apache(至 2.4.56-1),以前可以正常工作的大量 .htaccess 重写现在都收到 AH10411 错误,与查询中的空格有关。我正在寻找“正确”的解决方案。

用户点击一个链接,如 <a href='FISH%20J12345.6-78919'>clickme</a> 你所见,链接 URL 中的空格已被编码为 %20 .

相关服务器目录中的文件包含并执行该相关指令 .htaccess

RewriteRule ^(FISH\s*J[0-9\.]+-?\+?[0-9]+)$ myPage.php?sourceName=$1 [L,QSA]

(在上面,我检查的是空格,而不是 %20 ,因为浏览器似乎在满足此规则之前将其转换为空格)。

在我更新 Apache 之前,这个功能一直有效;现在用户收到 403 错误,并且我的 Apache 错误日志报告:

AH10411:重写的查询字符串包含控制字符或空格

这似乎是一个新的错误,因为用谷歌搜索没有找到任何结果!

编辑我的页面(例如)将空格更改为下划线并正确处理它实际上不是一个选择,因为设计旨在支持用户能够使用他们关心的对象的名称直接输入 URL。到目前为止,我发现的唯一解决方法有点丑陋,即在正则表达式中分别捕获源名称的两个部分,因此:

RewriteRule ^(FISH)\s*(J[0-9\.]+-?\+?[0-9]+)$ myPage.php?sourceName=$1+$2 [L,QSA]
                  ^   ^                                               ^^^

(我 $1%20$2 最后尝试了一下,也出现了同样的错误。)

有没有更好的解决方案?例如,当我想要捕获 URL 中的空格并将其作为参数传递给底层页面时,我应该如何处理它?

帖子版权声明 1、本帖标题:AH10411 错误:空格和 %20 导致 Apache mod_rewrite 出现 403 禁止访问
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Edric在本站《.htaccess》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 谢谢!添加 B 标志已为我解决了这个问题。关于您的其他观点:我不记得为什么我没有使用 \d;我怀疑我复制了一条旧规则,该规则在某一时刻只允许 0-5...至于空格:\'正确\' ID 将始终有一个空格,但我故意允许用户输入带有/不带有空格的 URL。因此,您对我当前解决方案的批评完全有效,但在这种特定情况下,这并不重要。还有 +/- 问题:我需要一个 + 或 - 符号(但不是两个),所以您是对的,只需 [+-] 就更好了。在构建原始 rexep 时,我显然半睡半醒!

返回
作者最近主题: