模板层面typecho兼容多个域名地址

之前写过一篇文章《如何为typecho站点设置多个域名》,讲的是修改程序源码来实现的多域名访问,之后又看了hran发表的 《关于Typecho静态资源路径的问题》,hran写了从模板方面入手兼容多域名访问,然而他的代码我没有用明白,但是原理理解了。

首先说明下为typecho绑定多个域名会有什么样的问题,假设网站绑定了http://zezeshe.com/http://www.zezeshe.com/,程序后台绑定的域名为http://zezeshe.com/,那么用http://www.zezeshe.com/对网站进行访问,网站也许依旧能正常显示,但是模板引用的资源依旧全是http://zezeshe.com/上的资源,而不是http://www.zezeshe.com/的,一旦资源中包好字体图标文件,可能字体图标就无法加载。

解决方法:不使用 options>siteUrl使options>themeUrl使

尝试一

代码语言:javascript
复制
在header.php最上边加
<?php define("THEME_URL",str_replace($this->options->siteUrl,$this->options->rootUrl,$this->options->themeUrl)); ?>
然后引用模板css等资源时类似这么写
<link rel="stylesheet" href="<?= THEME_URL ?>/style.css">

就是将this>options>themeUrl

尝试二

代码语言:javascript
复制
在上边的基础上几个斜杠
<?php define("THEME_URL",str_replace($this->options->siteUrl,$this->options->rootUrl.'/',$this->options->themeUrl)); ?>

结果typecho1.0和1.1均加载正常,但是typecho1.0加载结果多了个’/’如http://zezeshe.com//usr/themes/yodu/style.css

尝试三 其实尝试二已经可以凑合用了,但是作为一个强迫症患者,这种事情怎么能忍呢。于是有了下面的最终成果

代码语言:javascript
复制
在header.php最上边加
<?php define("THEME_URL",str_replace('//usr','/usr',str_replace($this->options->siteUrl,$this->options->rootUrl.'/',$this->options->themeUrl))); ?>
然后引用模板css等资源时类似这么写
<link rel="stylesheet" href="<?= THEME_URL ?>/style.css">

原理就是将尝试二的成果里面含有的//usr替换成/usr就行了。

至此结束

暂无介绍....

延伸阅读:

如何在阿里云服务器上安装爱快软路由系统

众所周知,爱快的软路由系统做的还是比较好的,我个人来说,公司和家里都在用,还有很多很多不可描述的功能,最近闲置了几台阿里...

admin
2024年10月26日
免费文字转语音在线支持318种声音和74种语言

2 天 2024-10-24 12-42-542461×1348 243 KB  一款免费的文本转语...

admin
2024年10月26日
推荐一些邮箱品牌

我算是专业玩邮箱的,也是 xyamail.com 303 创始人。之前在163和qq mail都工作过。我比较支持开源、...

admin
2024年10月26日
网友建的google的秘密通道

国内的百度真是越来越垃圾了,从垃圾走向更垃圾。那么,今天要推荐的,自然就是:GOOGLE!!不过很显然,国内很多朋友,并...

admin
2024年10月26日
Lark(国际飞书)域名邮箱

这个只允许国外注册,所以要科学注册。国内飞书可以用来发域名邮箱,但是现在存储有了明显的限制。国际飞书暂时没有。地址:ht...

admin
2024年10月26日