Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 当URL包含百分比%符号时,如何停止错误400?(阿帕奇)_Apache_Http_Mod Rewrite - Fatal编程技术网

Apache 当URL包含百分比%符号时,如何停止错误400?(阿帕奇)

Apache 当URL包含百分比%符号时,如何停止错误400?(阿帕奇),apache,http,mod-rewrite,Apache,Http,Mod Rewrite,当请求包含百分比%符号的URL时,是否有一种简单的方法防止服务器返回错误400(错误请求) 许多主要网站都有同样的问题,例如:或 但是其他网站已经修复了这个问题,并返回一个自定义错误页面,而不是标准的服务器响应,例如:或 是否有一种简单、单一的方法可以使单个字符%symbol不返回400错误,而是使用Apache中使用mod_rewrite或类似工具的自定义错误文档返回404错误 是否有一种简单、单一的方法来转义单个字符%symbol以避免返回400错误 是的,如果不希望url中的任何字符具有特

当请求包含百分比%符号的URL时,是否有一种简单的方法防止服务器返回错误400(错误请求)

许多主要网站都有同样的问题,例如:或

但是其他网站已经修复了这个问题,并返回一个自定义错误页面,而不是标准的服务器响应,例如:或

是否有一种简单、单一的方法可以使单个字符%symbol不返回400错误,而是使用Apache中使用mod_rewrite或类似工具的自定义错误文档返回404错误

是否有一种简单、单一的方法来转义单个字符%symbol以避免返回400错误

是的,如果不希望url中的任何字符具有特殊含义,则必须对其进行url编码

例如,在PHP中:

$string = urlencode('%');

仅供参考
%
编码为
%25

我通过做两件事解决了这个问题。使用apache配置,我将此错误定向到我的400.shtml文档。第二件事是在我的.htaccess文件中:

RewriteEngine On
RewriteRule 400.shtml 404.shtml [L]
您可以使用这两个脚本并使用服务器端脚本来处理此错误,而只需404.shtml


干杯。

这不是我想要的。我知道可以使用PHP或其他方式转义字符,但我需要一种方法来防止当用户错误地直接在URL中键入%时出现400错误,例如:单个
%
在URL中无效,这是一个错误的请求。服务器除了返回错误400-错误请求之外别无选择。你无法避免有人在他的URL栏中键入任何内容。您所能做的最好的事情就是更改错误400页面(可以是一个php脚本)。我也遇到了这个问题,因为第三方客户端发送的URL中有%'s。是的,我知道它们没有正确转义,不应该以这种方式发送给我们,但是我们如何处理URL(基本上我希望Apache在URL到达我的服务器代码之前用正确转义重写URL)您是否找到过允许URL中包含%的解决方案?不太可能。处理URL中的%的最佳方法是按照@arnaud576875的建议执行。让“错误400”页面检查服务器上URL中的百分比,然后根据需要重定向到另一个页面(或404页面)。