URL包含%,%2f将是/和%3d a = In yii?

时间:2014-08-11 12:49:50

标签: php url encryption yii yii-url-manager

我在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。我需要做些什么才能让它正常工作?

2 个答案:

答案 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中存在一些字符。所以,我必须替换这些字符。

这些链接帮助我:

Stackoverflow

google Group