QQ爹の博客 QQ爹の博客

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

in Typecho 文章转载请注明来源!

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

首先说明下为typecho绑定多个域名会有什么样的问题,假设网站绑定了http://qqdie.com/http://www.qqdie.com/,程序后台绑定的域名为http://qqdie.com/,那么用http://www.qqdie.com/对网站进行访问,网站也许依旧能正常显示,但是模板引用的资源依旧全是http://qqdie.com/上的资源,而不是http://www.qqdie.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://qqdie.com/usr/themes/yodu/style.css;typecho1.1上加载错误,结果是这样http://qqdie.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://qqdie.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就行了。

至此结束

jrotty WeChat Pay

微信打赏

jrotty Alipay

支付宝打赏

文章二维码

扫描二维码,在手机上阅读!

版权声明:本文基于《知识共享署名-相同方式共享 3.0 中国大陆许可协议》发布,转载请遵循本协议
文章链接:https://qqdie.com/archives/as-typecho-moreyumi.html (转载时请注明本文出处及文章链接)

typecho模板域名
发表新评论
已有 10 条评论
  1. 滑稽
    滑稽Windows 10谷歌浏览器
    回复

    这个可以做成插件么批量替换页面中 插件 文件 RSS 等位置么 小白技术不高

    1. 滑稽
      滑稽Windows 10谷歌浏览器
      回复

      @滑稽 。。。。。。大佬

    2. Jrotty
      JrottyWindows 10谷歌浏览器
      回复

      @滑稽 我不会插件

  2. 雨落无声
    雨落无声Windows 10谷歌浏览器
    回复

    又是一篇高产文

  3. Janervy
    JanervyWindows 10谷歌浏览器
    回复

    所以你更新了190

    1. Jrotty
      JrottyWindows 10谷歌浏览器
      回复

      @Janervy 其实170就准备弄得来着,后来忘了

  4. CAISIDUO
    CAISIDUOWindows 10谷歌浏览器
    回复

    前来膜拜 +1s

    1. CAISIDUO
      CAISIDUOWindows 10谷歌浏览器
      回复

      @CAISIDUO 赶紧给自己续一秒

    2. Jrotty
      JrottyWindows 10谷歌浏览器
      回复

      @CAISIDUO 膜拜一次生命将减少1s

  5. 思绪的空中生活
    思绪的空中生活Windows 10谷歌浏览器
    回复

    前来膜拜

PREVIOUS NEXT
雷姆
拉姆
音乐加载中...
0:00