Typecho设置多域名
前言
typecho后台只能设置一个域名,但我们通常一个站点会有两域名(一个带www,一个不带的),比如我在后台设置了个 https://kevinlu98.cn
,但此时我用https://www.kevinlu98.cn
带www的域名访问我的博客会出现一些js调用请求的接口为https://kevinlu98.cn/xxx
,就理所应当的出现了跨域问题
比如下面这位朋友给我反馈的问题
如何解决呢?
解决
先去域名提供商添加解析
进行站点根目录找到var/Widget/Options.php
全文搜索__TYPECHO_SITE_URL__
可以定位到如下代码
if (defined('__TYPECHO_SITE_URL__')) {
$this->siteUrl = __TYPECHO_SITE_URL__;
} else if (defined('__TYPECHO_DYNAMIC_SITE_URL__') && __TYPECHO_DYNAMIC_SITE_URL__) {
$this->siteUrl = $this->rootUrl;
}
在代码下面加上
// 多个, 自已设置了几个解析就添加几个
if($_SERVER['HTTP_HOST']=='你的其它域名'){
$this->siteUrl = 'https://你的其它域名';
}
完整例子
/** 初始化站点信息 */
if (defined('__TYPECHO_SITE_URL__')) {
$this->siteUrl = __TYPECHO_SITE_URL__;
} else if (defined('__TYPECHO_DYNAMIC_SITE_URL__') && __TYPECHO_DYNAMIC_SITE_URL__) {
$this->siteUrl = $this->rootUrl;
}
if($_SERVER['HTTP_HOST']=='www.kevinlu98.cn'){
$this->siteUrl = 'https://www.kevinlu98.cn';
}
进后台看看
测试访问
访问一下看看是否正常
不带www: 点击访问
带www: 点击访问
余言 游客 2022-01-28 16:46 回复
/** PHP识别域名 */
if($_SERVER['SERVER_NAME']==$_SERVER['HTTP_HOST']){
$this->siteUrl = 'https://'. $_SERVER['HTTP_HOST'];
}
直接这样写的话就不用添加好几个啦,就是需要全部用https访问
zhiyu 游客 2022-01-03 17:02 回复
阿哈哈哈,我还露了一小脸
MR丶冷文 管理员 2022-01-03 21:57 回复
@zhiyu
52Hz 游客 2022-01-02 00:58 回复
其实还有一种操作,单服务器多域名 ( ? ),可以实现不同域名访问同一个博客文件输出不同主题 / 手机电脑样式分离.不过分离写样式的很少了,毕竟工作量大.
MR丶冷文 管理员 2022-01-03 22:14 回复
@52Hz
是的,这种方式开发成本比较大,太麻烦了
常瑞 游客 2021-12-31 16:26 回复
不错不错