OneNav通过访问https://favicon.rss.ink/v1/网址的base64编码,返回网站的图标。因为图标缓存在第三方服务器,当网站图标变更时不能及时控制刷新缓存,也无法自定义图标这就很难受了。
getFavicon
我使用的是 getFavicon 可以获取网站的Favicon图标并显示在你的网页上。
- 上传到网站根目录或者 favicon 文件夹中
- cache 文件夹给 755 权限
- 然后访问 http(s)://you.url/favicon/get.php?url=目标网址
伪静态
使网址格式更美观,方便cdn缓存
1
2
3
4
5
6
7
8
| # 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
不用伪静态
1
2
3
4
5
6
7
8
9
10
11
| 【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)://末尾带有/,所以需要把返回网址进行格式化。
1
2
3
4
5
6
7
8
9
10
11
| 【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">
|