奇技淫巧系列 wordpress支持多域名访问功能简易设置教程
本文最后更新于 210 天前,其中的信息可能已经有所发展或是发生改变,如有失效可到评论区留言。

前言

当我们使用wordpress来搭建自己的个人博客的时候,经常会遇到的一个问题就是需要使用多种方式来访问wordpress。比如,在内网,我想要使用内网地址192.168.x.x来访问,在外网,我想用域名bbs1.example.com来访问,或者我也想用bbs2.example.com来访问。这种需求其实非常正常和普遍,但是在默认的wordpress里却不能实现,因为默认情况下wordpress会绑定初始化时使用的访问地址(有可能是IP,也有可能是域名)。


其实吧,如果ssl解密这一步不是wordpress自己来做(现在通常的做法是如果有反向代理,那么就在反向代理上进行ssl解密),那么其实wordpress锁定一个访问地址这个动作从安全角度来说意义并不大,因为能够通过反向代理到达wordpress的请求的访问域名肯定都是正确的。


为了使wordpress能够支持多域名访问,总的来讲有3种实现方式。

方式一:修改wp-config.php

初始化wordpress时绑定的访问域名是存储在数据库中,具体位置在wordpress对应的库中的表wp_options中:

image.png

所以很多改wordpress访问域名或者IP或者http改成https之类失败后导致的无法访问wordpress的问题,是可以通过直接修改数据库中地址来修复的,其中,home和siteurl,分别对应WordPress地址和站点地址,如下图:
image.png

注:如果要用直接修改数据库这种方式,可以使用命令行,也可以使用各种数据库客户端(DBeaver,phpadmin等)直接进行修改,这里我就不多说了,网上有很多文章介绍,这个不是我今天要说的重点。

而我们这节要讲的修改wp-config.php的方法,利用的是WordPress 中,同一个设置数据,常量的优先级高于在数据库里面定义的变量的原理。WordPress 有WP_HOME 和 WP_SITEURL 这两个常量,分别对应数据库中的home和siteurl,所以只要在wp-config.php中设置这2个常量,就会优先于数据库中的设置生效,有以下几种修改思路。

1、全放开,不做任何限制
在wp-config.php文件中的define('WP_DEBUG', false);后面添加如下代码:

define('WP_SITEURL', 'http://' . _SERVER['HTTP_HOST']);
define('WP_HOME', 'http://' ._SERVER['HTTP_HOST']);

image.png

这样配置就是设置网站的siteurl和home为当前请求的”HTTP_HOST”,效果就是不管使用什么域名来访问都被wordpress当成合法的siteurl和home,也就没有了访问域名的限制。当然,采用这种方式的前提是能够达到wordpress的请求都是正常请求,所以这种方式最好是和反向代理配合使用,或者能够有办法过滤达到wordpress上的非法域名请求。

2、直接限定能够访问wordpress的域名
在wp-config.php文件中的define('WP_DEBUG', false);后面添加如下代码:

$domain = array("bbs1.example.com", "bbs2.example.com", "bbs3.example.com"); 
if(in_array($_SERVER['HTTP_HOST'], $domain)){
    define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST']);
    define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST']);
}

这样配置效果就是来访问请求的HTTP_HOST只能是$domain中设置的域名,上图中就是bbs1.example.com、bbs2.example.com、bbs3.example.com。

当然,也可以就限定一个域名访问,以bbs1.example.com为例:

define('WP_SITEURL', 'http://bbs1.example.com');
define('WP_HOME', 'http://bbs1.example.com');

如果要采用这种方式,并且要配合反向代理进行部署,则反向代理上需要正确设置proxy_set_header Host传递正确的HOST。

注:采用修改wp-config.php的方式,会导致后台设置界面siteurl和home变为灰色无法修改:

image.png

不过并不影响正常使用,就是看着可能有点不爽。


另:上述方式对wordpress中的静态资源是无效的,例如上传的附件、图片等,如果要修改此类静态资源的地址,还需要插入如下代码:

define( 'WP_CONTENT_URL',  '//' . $_SERVER['HTTP_HOST'] . '/wp-content');

方式2:修改当前主题的 function.php

方式2其实和方式1一样,都是采用的设置WP_HOME 和 WP_SITEURL 这两个常量的方式,只不过方式1是在wp-config.php中设置,而方式2是在当前主题的function.php中进行设置。设置的内容都是一样的,这里就不再赘述了。

方式3:插件

实现多域名访问的插件应该不少,我之前使用的是Multiple Domain:

image.png

使用起来非常简单,直接添加用来访问的域名即可,如下图:
image.png

这插件其实很不错,就是太久没更新了,强迫症的我表示很不爽,所以我后来就换成修改wp-config.php的方式。
注:用插件这种方式不会导致后台设置界面siteurl和home变为灰色。

总结

其实如果不需要多域名访问,而只是需要修改访问域名,那么直接修改数据库方式我觉得是最省心省力的;如果需要多域名访问,即可以直接用插件方式来实现,也可以用修改wp-config.php或者function.php的方式来实现,就随大家喜欢了。

不过最重要的一点,修改wp-config.php或者function.php方式的优先级最高,如果不方便直接修改数据库,或者插件有问题导致的wordpress不能正常访问时,可以用这种方式来救急。

博客内容均系原创,转载请注明出处!更多博客文章,可以移步至网站地图了解。博客的RSS地址为:https://blog.tangwudi.com/feed,欢迎订阅;如有需要,可以加入Telegram群一起讨论问题。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
       

本站已禁用鼠标右键和各种快捷键,代码块内容可以直接在右上角点击复制按钮进行复制

zh_CN