Permalink
Browse files

fixed issue #129

根据实验,在某些web服务器上,对`urlencode`也就是RFC 3986的标准解释不同,它们将unicode字符转义为以百分号开头的小写字符,而php中则默认为大写字符。比如“你好”在php中被转义为`%E4%BD%A0%E5%A5%BD`而在某些服务器上被转义为`%e4%bd%a0%e5%a5%bd`。
这导致`Widget_Archive`中的`checkPermalink`函数将它们识别为不同的路径,从而循环重定向。

解决方法:在`checkPermalink`函数中直接比较`urldecode`以后的`path`
  • Loading branch information...
joyqi committed Dec 16, 2013
1 parent 6c07411 commit 6997bb1b8e2c4a736b66cee126e58c047f94d459
Showing with 1 addition and 1 deletion.
  1. +1 −1 var/Widget/Archive.php
View
@@ -621,7 +621,7 @@ private function checkPermalink()
$src = parse_url($permalink);
$target = parse_url($requestUrl);
if ($src['host'] != $target['host'] || $src['path'] != $target['path']) {
if ($src['host'] != $target['host'] || urldecode($src['path']) != urldecode($target['path'])) {
$this->response->redirect($permalink, true);
}
}

0 comments on commit 6997bb1

Please sign in to comment.