之前写过一篇文章《如何为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->rootUrl
,就是不使用绝对地址,而使用相对地址。
模板的$options->themeUrl
使用的是 $options->siteUrl
那么该怎样结局呢。
hran里面《关于Typecho静态资源路径的问题》提到了,但是我没用明白,于是自己按照hran的思路写了下。
尝试一
在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
里的$this->options->siteUrl
替换成$this->options->rootUrl
结果:typecho1.0上正常,引用结果类似这样http://zezeshe.com/usr/themes/yodu/style.css
;typecho1.1上加载错误,结果是这样http://zezeshe.comusr/themes/yodu/style.css
也就说差在一个/
上了。
尝试二
在上边的基础上几个斜杠
<?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
。
尝试三
其实尝试二已经可以凑合用了,但是作为一个强迫症患者,这种事情怎么能忍呢。于是有了下面的最终成果
在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
就行了。
至此结束
大佬那个CSS是怎么添加,就添加在header里吗?,这个我用了两个域名,用的miracle主题,第二个域名进网站后台会跳转到第一个网站,可以解决吗?
乱码Buding
静态资源是换了,那页面和分类的超链接呢
如果有需求的话可以看上一篇文章https://qqdie.com/archives/typecho_siteUrl-add.html
问题解决,感谢带
佬~
在百度找解决多域名字体图标乱码然后找了过来hhh
哈哈哈,其实最好还是只用一个域名,其他域名301跳转就好啦
这个可以做成插件么批量替换页面中 插件 文件 RSS 等位置么 小白技术不高
。。。。。。@(滑稽)大佬
我不会插件
又是一篇高产文@(滑稽)
所以你更新了190
其实170就准备弄得来着,后来忘了
前来膜拜 +1s@(呵呵)
赶紧给自己续一秒@(滑稽)
膜拜一次生命将减少1s@(滑稽)
前来膜拜@(呵呵)