wordpress不支持相对路径,这样非常不利于多域名的访问。用什么办法可以让wordpress按相对路径来运作呢?

很多人的方法是:登录后台-setting-options,将wordpress url设成“/”(引号里面的)就可以了,千万不能留空,否则系统会让你重新安装wordpress,确定后,wordpress url 那一栏是空的,但是在数据库里,siteurl的值是“/”。

以上的方法在新版的wordpress里已经不行了,于是人们又想到在数据库里去直接修改相应字段为“/”。这样貌似在很多场合下能够奏效。

但是,按照wordpress的逻辑,是一定要使用绝对路径的,它的很多函数都会用到home和siteurl两个变量。简单的把它们的值改成“/”,这样导致问题的可能性相当大。更好的办法是在遵守wordpress按绝对路径访问的设计逻辑下,想另外的办法。

这个办法其实很简单,就是先判断访问域名,然后把这个域名赋予home和siteurl两个全局变量。具体方法很暴力也很简单,不用改数据库,只需要在 wp-config.php 的最后加上以下语句:

<?php

$home = ‘http://’.$_SERVER['HTTP_HOST'];
$siteurl = ‘http://’.$_SERVER['HTTP_HOST'];
define(‘WP_HOME’, $home);
define(‘WP_SITEURL’, $siteurl);

?>

这样修改后,在后台的 setting-options 页面,只能显示而不能修改home和siteurl两个值(因为它们已经被定义成两个常量了,呵呵),它们完全是根据访问域名显示的。

这个方法既能使wordpress按“相对路径”的方式访问全站内容,又符合wordpress那个令人纠结的绝对路径的设计逻辑。应该是最好的解决办法了。不过,需要说明的是,这样修改后,编辑时插入的图片等媒体文件的路径仍然是绝对路径。插入后需要手工改一下,把路径的域名部分去掉就ok了。