不同域名对应WordPress网站不同页面

笔者想要让自己 WordPress 网站的网址使用起来更为简洁、清晰、方便,因而想要做到以下两点:

①隐去网址中的 index.php

②不同的域名对应不同的页面

隐去网址中的 index.php

我们知道,在 WordPress 设置里的自定义固定链接,假如不带上 index.php,那么访问 WordPress 文章时就会出现 404 错误而无法访问

image-20220225140933655

对于隐去网址中的 index.php,这一点比较简单,在宝塔面板中网站设置里找到“伪静态”一栏,在下拉框中找到“wordpress”,保存宝塔面板已经给你预设好的代码就行

image-20220224150124424

随后在固定链接里即可把 index.php 给隐去,WordPress 可以正常访问

image-20220225141230403

不同的域名对应不同的页面

对于这一点,根据实际情况和个人需要有不同的解决方案,每个方案的优缺点不太一样

  • ①多站点,每站点一域名
  • ②单站点,该站点支持多域名访问
  • ③单站点单域名,但别的域名可以跳转到该域名,且地址栏显示的域名会变成该域名
  • ④单站点单域名,但别的域名可以跳转到该域名,且地址栏显示的域名不变

各方案特点

简单说一下各方案的特点

多站点,每站点一域名

这意味着建立多个 WordPress 网站实现

比如 www.aaa.com 是第一个网站,www.bbb.com 是第二个网站,每个网站都有一个页面,那不同域名就是在多个网站间来回跳转

倘若业务量庞大,每个页面需要单独建站,那可能会比较合适

但假如业务量较小,仅仅是个人零碎的几个页面,那多建站大可不必,一个网站就一个页面的话,多建站反而还会增大各种成本,管理起来麻烦

单站点,该站点支持多域名访问

这个可以通过更改 WordPress 配置实现

我们知道 WordPress 默认页面的 URL 是这样的(隐去了 index.php 后):http://你的域名/页面名/

多域名访问就意味着 你的域名 那一块可以更换成任意域名

但假若你想要每个域名都对应一个页面名,而不出现页面名本身,那这种方法就做不到了,页面名还是会跟在域名后面

举个例子,我想要 http://www.bbb.com/ 单独对应博客页 http://www.aaa.com/ccc/,但用这种方法就会变成 http://www.bbb.com/ccc/,而没法消去后面的 ccc/

单站点单域名,但别的域名可以跳转到该域名,且地址栏显示的域名会变成该域名

这个可以通过重定向实现

举个例子,我想要 http://www.bbb.com/ 单独对应博客页 http://www.aaa.com/ccc/,用这种方法,我在浏览器中输入了 http://www.bbb.com/,那我就会自动跳转到该页面,并且浏览器网址栏此时显示的是 http://www.aaa.com/ccc/

单站点单域名,但别的域名可以跳转到该域名,且地址栏显示的域名不变

这个可以通过反向代理实现

反向代理和重定向的区别在于,页面跳转前后,反向代理的域名不会变,重定向的域名会变成定向目标的域名

比如 http://www.bbb.com/ 单独对应博客页 http://www.aaa.com/ccc/,在浏览器中输入了 http://www.bbb.com/,那页面跳转后,网址栏显示的 URL 也不会再变了

如果想要每个域名都对应一个页面名,而不出现页面名本身,这种方法就可以做到

各方案实现

多站点,每站点一域名

💬相关

博客《WordPress开启多站点功能以及插件MU Domain Mapping教程》

https://blog.csdn.net/weixin_42077074/article/details/123134011

单站点,该站点支持多域名访问

这个就比较简单了,可通过更改 WordPress 配置从而取消域名绑定限制

打开网站根目录下的 wp-config.php,在 define(‘WP_DEBUG’, false); 后面:

如果允许任意域名访问,则添加下面内容

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

如果仅允许指定的几个域名访问,则添加下面内容

$domain = array("www.aaa.com", "www.bbb.com", "www.ccc.com"); 
if(in_array($_SERVER['HTTP_HOST'], $domain)){
    define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST']);
    define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST']);
}
单站点单域名,但别的域名可以跳转到该域名,且地址栏显示的域名会变成该域名

直接在宝塔面板的网站设置中找到“重定向”,输入相应域名即可

image-20220225145850425

单站点单域名,但别的域名可以跳转到该域名,且地址栏显示的域名不变

以下以 http://www.bbb.com/ 单独对应博客页 http://www.aaa.com/ccc/ 为例

隐去了前文所说的 index.php 后,首先我们需要将文章的链接带上 ccc/,便于后续统一替换,此处以 blog/ 为例

image-20220225150107899

随后在宝塔面板的网站设置中找到“反向代理”

目标 URL 填 http://www.aaa.com/ccc/,发送域名填 www.aaa.com,并且将内容替换填上 www.aaa.com/ccc/www.bbb.com/

image-20220225150257870

还有个小细节,这之后你会先发现网站上一些图标或字体加载不出来……原因是出于安全考虑不给跨域请求资源

💬注释

… has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

image-20220225151019834

那么需要在原先 www.aaa.com 的网站设置中找到“配置文件”,加上以下代码,意为允许 .tff、.ttc、.otf、.eot、.woff、.woff2 文件跨域请求

location ~* \.(ttf|ttc|otf|eot|woff|woff2)$ {
    add_header Access-Control-Allow-Origin *;
}

image-20220225151200233

后面又发现了一个问题……经反向代理后,WordPress 网站需要密码的文章无法核对密码了,输入密码提交后直接白屏,这就让笔者抓狂不已,折腾了几天终于发现问题所在,具体可查阅下文

博客《解决WordPress网站反向代理后文章无法核对密码的问题》

https://blog.csdn.net/weixin_42077074/article/details/123167252

随后即可大功告成

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值