PHP-php url内含有百分号,rewrite错误

小组聊天灌水 小组聊天灌水 主题:993 回复:2175

PHP-php url内含有百分号,rewrite错误

归属感 发布于 2017-06-08 字数 252 浏览 1344 回复 4

php url内含有百分号,rewrite错误
报错代码
Bad Request

Your browser sent a request that this server could not understand.
apache 没有把%单独转化成%25 其他都正常,在跳转的时候,如果在缺少25的%后不全,就没问题,请问怎么回事,

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(4

甜柠檬 2017-09-05 4 楼

服务器是Apache的话,会把url自动做urldecode,那么百分号可能就变成了"/"之类的特殊字符,导致访问地址无效...

夜无邪 2017-07-31 3 楼

可以这样来写:

RewriteRule   .htm$   index.php   [R,NE]
灵芸 2017-06-20 2 楼

将url中的参数UrlEncode,这样会将'%'、'='、':'、'/'等转义,就不会出现特殊符号导致url请求错误了。

清晨说ぺ晚安 2017-06-17 1 楼

Apache 有一个选项AllowEncodedSlashes, 默认是”Off”, 可以检查下,如果可以,修改下配置试试。
可以使用urlencode解决
举例来说,对于 http://www.domain.com/q/4640 后边的 q/4640,
$url = 'http://www.domain.com/' . urlencode(str_replace('/', '%2F', 'q/4640'));
这样, 斜杠被两次转义, 变为”q%252F4640”. Apache 接收到请求后, 进行一次decode, 得到”q%2F4640”, 然后PHP 自己再将请求参数进行一次解码,就将url正确解析了。