如何重现错误:--我的URL中的一个空格将触发错误。
观察错误:--似乎是在3/10左右突然发生的。--我没有升级我的Apache版本,但是-1ubuntu4.27
包似乎是自动安装的(/var/log/dpkg.log
上有相关的消息)。-打开浏览器: 403禁止错误。-在Apache日志上:它获得AH10411: Rewritten query string contains control characters or spaces
错误。
潜在的解决方案:我发现了两个引用,user @MrWhite建议在RewriteRule
上使用D4
标志。它确实适用于我的服务器。
My问题:-确切地说,是那个导致错误的特定包吗?--这个问题只发生在RewriteRule
上吗?--有通用的修复吗?我的意思是,如果我有多个应用程序,而不是修改它们的每个RewriteRule
,那么是否有可能一次进行修正,并且修复可以应用于整个服务器?
相关参考资料:-- https://stackoverflow.com/questions/75684314/ah10411-error-managing-spaces-and-20-in-apache-mod-rewrite -- 重写规则开始返回403禁止错误
发布于 2023-03-29 04:54:41
正如罗希特古普塔在一条评论中指出的那样,Apache2在这个git拉请求中出现了变化,我只需更改我的RewriteRules
以包含B
和BNP
标志。
例如:
RewriteRule ^(.*)$ index.php?q=$1 "[L,QSA,B= ?,BNP]"
旧的RewriteRule
不包括B
和BNP
条目。对于您的服务来说,BNP
可能不是必需的。它确保空间使用%20
而不是+
(即NP作为No Plus)。
请确保以这种方式更改所有RewriteRule
。
<#>IMPORTANT注意:在这种情况下,引号很重要,因为默认情况下,空格分隔参数。换句话说:将被视为,而且很明显,Apache2将无法加载该数据。
发布于 2023-04-11 15:55:17
尝试用+替换空格
在后面添加以下内容
RewriteBase /
RewriteRule ^(.*)\ (.*)$ /$1+$2 [L,R=301]
在主.htaccess中
https://webmasters.stackexchange.com/questions/141837
复制相似问题