0

我在 Google 网站管理员上有很多未关注的页面。我检查了它们,因为很多 url 就像http://www.mysite.net/2013/06/burn-notice-7%C3%9702-sub-espanol-online.html 正确的 url 必须是http ://www.mysite.net/2013/06/burn-notice-7x02-sub-espanol-online.html

我尝试在其上发布一个带有许多“x”的标题,并且当我发布例如这样的新系列剧集时唯一奇怪的 %C3%97:Burn Notice 7x02 Sub Español Online。当 x 介于数字之间时,会出现 %C3%97,这使我的帖子重复。

所以我尝试修复将数据库排序规则从 latin1_swedish_ci 更改为 utf8_general_ci 但仍然发生相同的情况。我也检查了我的 wp-config.php 并且是 define('DB_CHARSET', 'utf8');

拜托,有人知道解决所有这种情况的好方法吗?如果我找到需要更新旧网址的解决方案,该数据库非常大,并且可以考虑。

提前谢谢你

4

1 回答 1

0

您说 Google 正在使用的网址:

http://www.mysite.net/2013/06/burn-notice-7%C3%9702-sub-espanol-online.html 

与网址几乎相同:

http://www.mysite.net/2013/06/burn-notice-7x02-sub-espanol-online.html

因为百分比编码字符实际上代表了Unicode 字符“多重符号”,也就是它是“×”而不是“x”。为了安全起见,谷歌只是使用百分比编码版本。这意味着您的数据库可能没问题,因为它将 URL 显示为有效的 UTF8。

问题可能在于您如何解释请求的 URL 并尝试将其与数据库匹配。PHP 应该已经将百分比编码值解码为“×”,因此:

  • 有些东西破坏了字符串(例如,调用非多字节安全函数,如 strtolower() 而不是 mb_strtolower())。

  • 您的 PHP 代码以 UTF8 以外的字符集连接到数据库,请检查您的 my.cnf 文件是否在客户端部分包含“default-character-set=utf8”。

或者还有其他问题。不过,该 URL 确实看起来有效。

于 2013-06-22T23:02:25.043 回答