Mod_security 406,URL中带有“〜”

时间:2015-10-29 00:40:50

标签: php

我有一个类似于此的URL时出现406 Not Acceptable错误:

www.example.com/search/find?q=YSBkZXJwIGZyb20gZGVycA~

似乎是由于单一的~字符。我必须使用此函数base64_encode()

function base64_url_encode($string = null) {
    return strtr(base64_encode($string), '+/=', '-_~');
}

因为普通的base64编码会生成一个不可解析的URL。

我浏览了一遍并发现了这个答案:PHP/Apache Error:406 Not Acceptable

其中说要禁用Mod_Security:

<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>

我知道我可能必须为上面的函数找到一个不同的重写,但是我怎么能解决这个问题,因为如果有任何办法又不会再次收到错误?

1 个答案:

答案 0 :(得分:1)

不要将=字符替换为~,只需将其完全删除即可。 This is a common approach,并且不会阻止值被解码。