正文索引 [隐藏]

OneNav通过访问https://favicon.rss.ink/v1/网址的base64编码,返回网站的图标。因为图标缓存在第三方服务器,当网站图标变更时不能及时控制刷新缓存,也无法自定义图标这就很难受了。

搭建 getFavicon API

我使用的是getFavicon,可以获取网站的Favicon图标并显示在你的网页上。

  • 上传到网站根目录或者 favicon 文件夹中
  • cache 文件夹给 755 权限
  • 然后访问 http(s)://you.url/favicon/get.php?url=目标网址

伪静态

使网址格式更美观,方便cdn缓存

# Nginx规则
rewrite ^/favicon/(.*)\.png$ /favicon/get.php?url=$1;

# Apache 规则
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^favicon/(.*)\.png$ favicon/get.php?url=$1 [L]
</IfModule>

调用方法 http(s)://you.url/favicon/目标网址.png

注:目标网址不能有 http(s)://

修改OneNav

不用伪静态

【templates\default\index.php】
第139行
<img src="https://favicon.rss.ink/v1/<?php echo base64($link[‘url‘]); ?>" alt="HUAN" width="16" height="16">
改为
<img src="favicon/get.php?url=<?php echo $link[‘url‘]; ?>" alt="HUAN" width="16" height="16">

【templates\webstack\index.php】
第168行
<img src="https://favicon.rss.ink/v1/<?php echo base64($link[‘url‘]); ?>" alt="HUAN" width="16" height="16">
改为
<img src="favicon/get.php?url=<?php echo $link[‘url‘]; ?>" alt="HUAN" width="16" height="16">

使用伪静态

由于使用伪静态后目标网址不能带有http(s)://,且后面要加上.png后缀。而OneNav中$link[‘url’]返回的网址开头带有http(s)://末尾带有/,所以需要把返回网址进行格式化。

【templates\default\index.php】
第139行
<img src="https://favicon.rss.ink/v1/<?php echo base64($link[‘url‘]); ?>" alt="HUAN" width="16" height="16">
改为
<img src="favicon/<?php echo rtrim(strtr($link[‘url‘], array(‘https://‘ => ‘‘, ‘http://‘ => ‘‘)), ‘/‘); ?>.png" alt="HUAN" width="16" height="16">

【templates\webstack\index.php】
第168行
<img src="https://favicon.rss.ink/v1/<?php echo base64($link[‘url‘]); ?>" alt="HUAN" width="16" height="16">
改为
<img src="favicon/<?php echo rtrim(strtr($link[‘url‘], array(‘https://‘ => ‘‘, ‘http://‘ => ‘‘)), ‘/‘); ?>.png" alt="HUAN" width="16" height="16">