0

我有一个旧网站,其中 URL 中允许使用撇号。这并不理想,但它是它的设置方式,并且在我转移到新服务器之前它运行良好。页面标题基本上是 URL 中的“slug”,然后用于查找数据库。但是,在我的实时服务器上,当标题包含撇号(在 URL 中显示为撇号)时,撇号在尝试处理它并进行数据库查找时变成一个问号。

我还有一个登台服务器-据我所知,登台服务器和live都运行centOS和php在两者上的配置相同。这个撇号问题不会发生在舞台上,但会发生在现场。任何想法可能是什么原因?一些字符编码问题?非常感谢

编辑:更多信息...

示例 URL:/about/club's-opening-times 这在浏览器 URL 栏中显示良好。

 echo $_SERVER["REQUEST_URI"]; // outputs /about/club's-opening-times
 $page_name = end(Router::$segments); 
 echo $page_name; //club?s-opening-times

当我对 URL 进行编码时,也会发生同样的事情 - %27 变成 ? 如您所见,我正在使用框架(kohana 2.3)库来获取 URL 段,因此 Router::segments 的某处正在用问号替换撇号。我在 live 和 staging 和 charset 设置上检查了 phpinfo() 是相同的。这是一个奇怪的问题。

4

3 回答 3

0

看起来您的航段对 Kohana 路线无效。看看 Kohana 路由器类:https ://github.com/kohana/core/blob/3.3/master/classes/Kohana/Route.php

于 2013-01-14T17:13:05.310 回答
0

听起来您没有<meta charset="UTF-8">在标题标签上方/下方包含字符集,尽管如果没有看到您的代码就很难分辨。

于 2013-01-14T15:29:37.717 回答
0

这很可能是因为您的 PHP suhosin.server.strip 设置在您的暂存环境和生产环境之间不同。

虽然$_SERVER['REQUEST_URI']正确包含单引号,但 Kohana 使用$_SERVER['PATH_INFO']是否存在受此设置影响的情况。

来自https://bugs.php.net/bug.php?id=52293&edit=1#1298061392

; When set to On the dangerous characters <>"'` are replaced with ? in
; the server variables PHP_SELF, PATH_TRANSLATED and PATH_INFO. This will 
; protect against some XSS vulnerabilities. 
suhosin.server.strip = 0
于 2013-05-20T17:09:12.680 回答