如果URL包含%百分比符号,如何停止错误400? (Apache)的

时间:2011-08-16 10:23:26

标签: apache http mod-rewrite

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

许多主要网站都存在同样的问题,例如:http://twitter.com/%http://bing.com/%

但其他网站已修复此问题并返回自定义错误页面,而不是标准服务器响应,例如:http://facebook.com/%http://google.com/%

是否有一种简单的单一方法来逃避单个字符%符号返回400错误,而是在Apache中使用mod_rewrite或类似的自定义错误文档返回404错误?

2 个答案:

答案 0 :(得分:2)

  

是否有一种简单的单一方法来逃避单个字符%符号返回400错误

是的,如果不希望它们具有特殊含义,则必须对您放入网址的任何字符进行urlencode。

例如在PHP中:

$string = urlencode('%');

仅供参考%编码为%25https://twitter.com/%25

答案 1 :(得分:0)

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

RewriteEngine On
RewriteRule 400.shtml 404.shtml [L]

您可以使用这两个并使用您的服务器端脚本来处理此错误,而不仅仅是404.shtml。

干杯。