我在yii的网址是:
http://localhost/php_pro_106/reload/ByCustomer/mJYwIzoaIGe0R8lAVCqPhG%2Fg0jJFWjiWWdPnkq5VDlY%3D
我应该在url manager中做些什么才能得到这个,我目前的规则是:
'<controller:\w+>/ByCustomer/<giftcode>'=>'<controller>/ByCustomer',
实际问题是我得到了:
The requested URL /php_pro_106/reload/ByCustomer/mJYwIzoaIGe0R8lAVCqPhG/g0jJFWjiWWdPnkq5VDlY= was not found on this server.
这是由于网址中的%3D
%2F
。我需要做些什么才能让它正常工作?
答案 0 :(得分:0)
我知道apache在URL中遇到%2F
的问题,它总是会回复404,不会执行php脚本。我从未找到解决办法。但那是几年前的事了。
编辑:
有一个解决方案,但它要求您至少可以编辑虚拟主机的apache配置文件(当时我没有那个)。然后,您必须在AllowEncodedSlashes On
内添加<VirtualHost>
。或者你也可以将它设置为全球。
答案 1 :(得分:0)
我得到了它的解决方案,为此我必须改变我的编码和解码方法:
function base64_url_encode($input) {
return strtr(base64_encode($input), '+/=', '-_,');
}
function base64_url_decode($input) {
return base64_decode(strtr($input, '-_,', '+/='));
}
问题是由于编码的Url中存在一些字符。所以,我必须替换这些字符。
这些链接帮助我:
和