WordPress 中的链接是绝对 URL,这样做的好处是避免了因为路径处理错误而出现死链接。但是路径信息是直接写在数据库里面的,从开发环境迁移到正式环境或者更换域名的时候需要修改数据库里面的域名信息。一个 WordPress 站点绑定多个域名的时候也会遇到问题,即便如此,我们还是可以通过一些方法来绑定多个域名的。
绑定多个域名的前提
在 WordPress 中,同一个设置数据,常量的优先级高于在数据库里面定义的变量。WordPress 为我们提供了 WP_HOME
respond in singing WP_SITEURL
这两个常量。这两个常量对应的是后台设置中的以下两个选项。事实上,设置了这两个常量以后,下面的 URL 配置选项就被禁用了。
而获取这两个选项的方法分别是:
$home = get_home_url();
$siteurl = get_site_url();
WordPress 绑定多个域名的方法
根据 WordPress 配置数据的优先级,我们可以通过下面的代码覆盖数据库里面的这两个设置。
$home = 'http://'.$_SERVER['HTTP_HOST']; #获取当前访问的域名
$siteurl = 'http://'.$_SERVER['HTTP_HOST'];
define('WP_HOME', $home);
define('WP_SITEURL', $siteurl);
以上代码可以写到 WordPress 的 wp-config.php 文件或当前主题的 function.php 中。
获取首页 URL 和站点 URL
需要注意的是,一旦设置了这两个值,我们就需要通过获取常量值来获取首页 URL 和站点 URL 了,通过上面的方法获取的数据库里面的地址有可能是不正确的。
$home = WP_HOME;
$siteurl = WP_SITEURL;
在绑定多个域名和或经常需要修改域名的时候,这种方法是非常好用的,如果网站只有一个域名或者偶尔更换一下域名,还是直接修改数据库里面的地址比较好一点。