在本教程中,我们将介绍如何修改 WordPress 配置文件 wp-config.php 来实现 WordPress 网站的多域名访问,并防止恶意域名解析。此外,我们还将讨论如何处理静态资源文件的访问路径。
第一步:修改 wp-config.php
文件以禁用域名检查
在 WordPress 根目录下找到并编辑 wp-config.php
文件。在 <?php
标签后的第三行插入以下代码:
define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST']); define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST']);
作用:
- 以上代码通过动态获取当前访问的域名并定义
WP_SITEURL
和WP_HOME
,确保网站在访问不同域名时不会进行 301 重定向。 - 无论解析哪个域名,只要 DNS 正确指向服务器,都可以访问同一 WordPress 网站。
第二步:设置固定的域名解析(推荐这个配置)
为了防止他人恶意解析域名到你的网站,你可以设置允许访问的特定域名。只允许特定域名解析并访问站点,其他域名无法访问。
在 wp-config.php
中,添加以下代码:
$domain = array("www.a.com", "www.b.com", "www.c.com"); if(in_array($_SERVER['HTTP_HOST'], $domain)){ define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST']); define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST']); } else { header('HTTP/1.0 403 Forbidden'); exit('Access denied.'); }
作用:
- 这个代码段首先定义了一个允许访问的域名数组
$domain
,如www.a.com
、www.b.com
和www.c.com
。 - 只有当请求的域名在
$domain
数组中时,才允许访问 WordPress 站点,否则返回 403 错误,拒绝访问。
注意事项
1. 支持 HTTPS 协议
如果你的 WordPress 站点使用了 HTTPS 协议,需要将代码中的 http://
修改为 https://
:
define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST']); define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST']);
2. 网站安装在二级目录
如果你的 WordPress 站点安装在服务器的二级目录下(例如 www.a.com/blog
),则需要进一步修改代码:
define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST'] . '/blog'); define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST'] . '/blog');
根据你的安装目录调整 /blog
为实际的路径。
第三步:修改静态文件地址
尽管以上代码可以实现多域名访问,但网站中的静态资源(如图片、视频等)地址仍包含原始安装的域名。如果需要让静态资源在不同域名访问时自动适应当前域名,可以使用相对路径解决此问题。
在 wp-config.php
中添加以下代码:
define('WP_CONTENT_URL', '/wp-content');
作用:
- 这个代码将 WordPress 的静态资源路径(如
wp-content
文件夹中的文件)设置为相对路径。 - 这样一来,不同域名访问时,静态资源的地址会根据当前域名动态变化,确保静态资源也可以在不同域名下正常加载。