WP建站时遇到的某些问题

TOC

首页循环重定向

可以使用下面的方法解决问题。 修改 wp-include/canonical.php,将37行,$do_redirect的默认值修改为false。

function redirect_canonical( $requested_url = null,$do_redirect = false ) {

问题得到了暂时的解决。 然而,在后台调整 Permalink 格式后,会出现打开所有帖子时均会显示首页内容的问题。 后来尝试使用 Permalink Fix & Disable Canonical Redirects Pack,仍然出现上述问题,即打开所有帖子时均会显示首页内容。而将 Permalink 设置为默认格式(…/?id=123)后,打开所有帖子时均会出现循环重定向的问题。 最后使用 Fix Multiple Redirects,终于解决了一切问题。

裁剪图片时提示错误

可以考虑安装 php-gd 插件。如果 php 是用 yum 安装的,那么也可以用相同的方法安装 php-gd。

中国大陆地区的特色问题

之前 Google 相关服务被墙,googleapis.com 也随之无法访问。这意味着中国大陆地区无法使用 ajax.googleapis.com 提供的 jQuery 和 Bootstrap 等现代网站常用的相关脚本和CSS,以及 fonts.googleapis.com 提供的一些秀气的字体,例如 Noto Serif Noto-Serif Noto Sans Noto-Sans Open Sans Open-Sans Inconsolata Inconsolata 为了使 WordPress 站点更符合国情,我们需要对网站的 JS/CSS/WebFont 链接进行修正,去掉其对 googleapis.com 的直接依赖。

Bootstrap CSS

对于 Bootstrap,可以使用 WordPress Twitter Bootstrap CSS 插件将相关文件寄存于本机服务器上。

WebFont

对于字体,可以使用 Remove Google Fonts References 插件,这会使网站不再使用 Google 的字体,转而使用默认设置……老宋体! 本人多少有点儿强迫症,于是就去寻找能够使用上述字体的其他解决方案。 最后发现,在国内有人提供 Google API 和字体的镜像服务器,分别是360网站卫士常用前端公共库CDN服务中国科学技术大学 Linux 用户协会 。而在 WordPress 中也有国人开发了相关的插件,之前尝试过一款简洁的插件 Google Font Fix,稍微看了一下代码,发现这款插件比较人性化的地方是,可以通过在线查询DNS来获知客户端的地理区域信息,保证了只对中国大陆地区的用户进行链接修正。但后来发现这款插件的修正逻辑过于简单,可能会把正文中的 googleapis.com 这样的文本也全部替换掉,故卸载之。 后来尝试了 Useso take over Google 这款插件,它使用了正则表达式来对导入CSS和动态字体加载的情况均做了处理,使用体验较好。尽管它对链接的修正是不区分客户端地理位置的。 本来按照 Useso take over Google 的逻辑,如果 WP 站点使用 HTTP 协议,那么会将指向 googleapis.com 的链接修正至 360CDN 的 useso.com;如果是 HTTPS 协议,则会修正至 USTC 的 lug.ustc.edu.cn 。这样的考虑固然不错,因为二者分别只支持 HTTP 和 HTTPS。然而……

使用 360 CDN 字体镜像后的主页

不知是由于网络问题,还是CDN服务器的问题……总之,随后我放弃了 360 CDN。 后来,经过测试,发现如果使用 HTTP 协议访问 USTC,会自动重定向至 HTTPS 版本,因而果断决定修改插件的源代码。

function useso_take_over_google_str_handler($matches)
{
	$str = $matches[0];
// 暂时不使用 360 的服务。
	if (false && !is_ssl()) {
		$str = str_ireplace('//fonts.googleapis.com/', '//fonts.useso.com/', $str);
		$str = str_ireplace('//ajax.googleapis.com/', '//ajax.useso.com/', $str);
	} else {
		$str = str_ireplace('//fonts.googleapis.com/', '//fonts.lug.ustc.edu.cn/', $str);
		$str = str_ireplace('//ajax.googleapis.com/', '//ajax.lug.ustc.edu.cn/', $str);
	}

	return $str;
}

问题解决。现在仅剩的问题就是,不知道海外用户访问此站点的时候,字体会不会加载不出来 😉

使用 USTC 字体镜像后的主页

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

ERROR: si-captcha.php plugin: GD image support not detected in PHP!

Contact your web host and ask them to enable GD image support for PHP.

ERROR: si-captcha.php plugin: imagepng function not detected in PHP!

Contact your web host and ask them to enable imagepng for PHP.

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

Content is available under CC BY-SA 3.0 unless otherwise noted.