发布作者: 毒蛊博客
百度收录: 正在检测是否收录...
最后更新: 2023年 02月 05日 14:40
本文链接: https://blog.idg8.cn/438
作品采用: 《 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 》许可协议授权
今天把ssl添加上,上一次过期到现在已经过去三个月了,宝塔免费的白嫖不了就用腾讯云的吧,因为网站系统是typecho的,所以还稍稍折腾了一会。
如果您的网站没有CDN,可能只需要以下设置就完事了。
方法① 301重定向
说白了就是让你的子域名硬跳转到主站。
首先打开文件(宝塔面板可直接在网站重定向面板上设置)
vi /etc/nginx/sites-enabled/domain.com.conf
然后写入
server {
listen xxx.xxx.xxx.xxx:xx; //你的IP:端口
server_name domain.com; //被重定向域名
return 301 http://orgindomain.com$request_uri; //向源站重定向(带目录请求)
}
这个方法实在是下策,对seo优化和打开速度都不友好,不是很推荐。
在Typecho网站根目录下 config.inc.php 中 , 找到
Typecho_Db::set($db);
这句话,在其后写上:
Helper::options()->siteUrl='http://www.domain.com';//您的子站点
在网站根目录下 /var/Widget/Options.php 中,找到
/** 初始化站点信息 */
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['SERVER_NAME']=='www.orgindomain.com'){ //判断地址栏域名
$this->siteUrl = 'http://www.orgindomain.com'; //将站点总体域名替换为地址栏域名
}
以上方法对大多Typecho网站都适用。
可是,由于我加了CDN,源站和子站即使是同一个项目,也不会被允许,依旧存在跨域问题。
这时候有一个非常好的办法。
在做兼容多站点时,我在Typecho的框架 /var/Widget/Options.php 中发现这样一段话:
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;
}
这个 TYPECHO_DYNAMIC_SITE_URL 引起了我的注意。经过测试,我发现:
在Typecho网站根目录下 config.inc.php 中,
/** 用户中心(相对路径) */
define('__TYPECHO_USER_DIR__', '/user/');
后面加上
/**开启动态域名/跨域补救**/
define('__TYPECHO_DYNAMIC_SITE_URL__',true);
其实在网站的config.php里面添加最后一步就行了,开启动态域名补救。
腻害腻害,不愧是大佬
看看
感谢分享,赞一个