URL 中的 %20 现在导致 ERROR 403 FORBIDDEN 错误

Sam*_*mmy 7 php apache .htaccess drupal-6 http-status-code-403

这不是一个重复的问题。

首先,我有3个“相同”的Drupal 6.20 CMS桌面类型网站,使用MySQL数据库5.7.23和PHP 5.6.40。

所有这 3 个网站都已存在多年,以前从未遇到过此问题。

最近,内置搜索的 3 个网站中的 2 个(站点 1)http://sam308.com/和(站点 2)http://closefocusresearch.com/也遇到了完全相同的问题。

问题是:

例如,在http://closefocusresearch.com/上,当我使用网站上的内置搜索表单,并使用两个词的术语(例如不带引号的“防弹衣”)或使用任何多词搜索词时包含空格,搜索结果会显示消息 ERROR 403 - FORBIDDEN。不过,下面的搜索结果网址没有改变。

该页面的搜索结果网址为:

http://closefocusresearch.com/search/node/body%20armor
Run Code Online (Sandbox Code Playgroud)

在出现此问题之前,上述搜索结果 url 将显示正确的搜索结果。

现在, url 中的%20导致错误 403 - FORBIDDEN 结果,如下图所示。

由于防弹衣这两个词之间的空格已被替换为%20,我现在遇到了 403 错误。仅当搜索词包含空格时才会发生这种情况,否则工作正常。

附带说明一下,如果手动将%20替换为%2520,将url 中的%替换为%25 ,如下所示,那么我会得到正确的搜索结果。

http://closefocusresearch.com/search/node/body%2520armor
Run Code Online (Sandbox Code Playgroud)

如果您想亲自测试,请使用主页上的站点搜索框。

我花了 3 天的时间试图在互联网和 drupal.org 上查找此行为的原因,但找不到解决方案。所有 3 个网站上的所有文件权限都是相同的。

我也尝试从我的托管公司获得支持,但他们无法提供任何帮助。

我还尝试修改 .htaccess 文件来纠正此行为,但没有成功。我不是编写 RewriteRule 规则的专家。

是否是最近的 Apache 更新错误导致了此问题?注意:我无法访问共享托管计划上的 Apache 系统。

关于如何解决这个问题有什么想法吗?

感谢您的时间。

错误 403 - 禁止结果

小智 12

我按照此处的说明进行操作,看起来解决了问题: AH10411 error:Managing Spaces and %20 in apache mod_rewrite

将您的 .htaccess 更改为:

RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Run Code Online (Sandbox Code Playgroud)

到:

RewriteRule ^(.*)$ index.php?q=$1 [B,L,QSA]
Run Code Online (Sandbox Code Playgroud)