首页
wjlink
投稿
视频
直播
壁纸
更多
留言
统计
LINK
Search
1
宝塔面板绑定域名套上cloudflare – 实现cdn访问拯救你的IP
110 阅读
2
Python 爬取YouTube某个频道下的所有视频信息
110 阅读
3
为你的 WordPress 站点配置 Telegram Instant View
63 阅读
4
苹果CMS(MACCMS)如何在标题中随机插入关键词
60 阅读
5
windows 使用 FFmpeg 按大小或时间来批量分割视频
59 阅读
技術類
自媒体
調查
问卷调查
美國站
英國站
注册丨登录
Search
标签搜索
wordpress
V2Ray
vps
苹果cms
面板
php
宝塔
ipfs
DD
脚本
语言
上传
判断
Youtube
cdn
ip
AI
HTML
1
2
Gengre
累计撰写
67
篇文章
累计收到
0
条评论
今日撰写
0
篇文章
️
首页
分类
技術類
自媒体
調查
问卷调查
美國站
英國站
页面
wjlink
投稿
视频
直播
壁纸
留言
统计
LINK
登录丨注册
搜索到
67
篇与
的结果
2023-10-21
宝塔面板替代面板 -Mdserver-web开源免费的VPS主机控制面板
一、Mdserver-web安装网站: https://github.com/midoks/mdserver-web 进入VPS主机,执行以下命令开始安装:自动安装curl -fsSL https://raw.githubusercontent.com/midoks/mdserver-web/master/scripts/install.sh | bash脚本更新curl -fsSL https://raw.githubusercontent.com/midoks/mdserver-web/master/scripts/update.sh | bash通用安装curl -fsSL https://raw.githubusercontent.com/midoks/mdserver-web/master/scripts/quick/app.sh | bashmw菜单命令代码mw —调出面板管理总菜单mw 1 —重启面板服务mw 2 —停止面板服务mw 3 —启动面板服务mw 4 —重载面板服务mw 5 —修改面板端口mw 10 —查看面板默认信息mw 11 —修改面板密码mw 12 —修改面板用户名mw 13 —显示面板错误日志目前,脚本的兼容性还存在一定的问题,如果你发现安装完成后没有账号密码,请执行一次脚本更新安装即可。使用Mdserver-web安装完成后生成的地址、账号和密码登录,以下就是Mdserver-web的后台管理面板了,跟宝塔面板基本上是一样了。(点击放大)二、Mdserver-web配置2.1 OpenRestyMdserver-web的建站环境插件在软件管理页面中都可以找到,首先我们要安装OpenResty,这是一个类似于Nginx的Web平台,后期如果增加了Nginx,可以选择安装Nginx.2.2 PHP与MysqlPHP支持5.2到8.1各个版本。Mysql数据支持5.5到8.0。另外,记得安装PHPmyAdmin数据库管理。2.3 启动与自启动将OpenResty、PHP、Mysql等安装完成后,记得先手动启动一下。为了能够让开机启动,我们还需要进入到OpenResty、PHP、Mysql的设置页面将他们的自启动激活。如果你发现程序运行问题,记得查看一下OpenResty、PHP、Mysql是不是在正常运行。三、Mdserver-web建站3.1 绑定域名进入到Mdserver-web后台管理面板,添加网站,输入你的域名,记得提前将你的域名解析到服务器IP上。这个就是Mdserver-web的网站管理界面了,主要功能有:域名管理、子目录绑定、网站目录、流量限制、伪静态、默认文档、配置文件、SSL、PHP版本、防盗链、响应日志。3.2 PHP版本Mdserver-web支持给不同的网站设置不同的PHP版本,前提是你在软件管理中已经安装了多个PHP版本。3.3 URL伪静态Mdserver-web已经自带了DZ、Wordpress等流行的建站程序的URL伪静态规则,你直接根据你自己的建站需要来选择即可。3.4 免费SSL证书Mdserver-web已经集成了acme.sh,支持免费在线申请ZeroSSL、letsencrypt等免费SSL证书。SSL证书申请成功后,记得开启Https跳转,这样所有的访问就会自动跳转到SSL访问了。3.5 在线文件管理Mdserver-web的在线文件管理器基本上和宝塔面板一样了,各种功能都已经具备。Mdserver-web在线文件远程下载和上传。四、总结从功能上来看Mdserver-web已经具备作为建站Web平台的能力了,而且Mdserver-web的操作习惯和宝塔一样,上手很快。但是,Mdserver-web目前还存在不兼容和不稳定的情况,希望后期可以得到改进。其实,VPS建站使用VPS控制面板虽然方便,同时也会带各种麻烦,放弃面板使用命令建站才是“归宿”,推荐使用:Oneinstack和LNMP一键安装包。开源地址:https://github.com/midoks/mdserver-web
2023年10月21日
4 阅读
0 评论
0 点赞
2023-10-21
宝塔面板教程:一键卸载宝塔面板和运行环境,清除网站数据
如何一键卸载宝塔面板及清理网站数据?宝塔面板卸载之后我们可以重新安装别的建站环境,目前宝塔已经提供了比较方便的卸载功能,我们可以一键卸载,卸载之后还可以删除网站数据文件,这样就更彻底了。当然也可以直接重装,最为省事。宝塔Linux面板是提升运维效率的服务器管理软件,支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等100多项服务器管理功能。一、宝塔面板一键卸载(仅面板)使用下面的命令可以一键卸载宝塔面板,需要注意的是仅仅卸载了面板,网站数据还是在的。/etc/init.d/bt stop && chkconfig –del bt && rm -f /etc/init.d/bt && rm -rf /www/server/panel二、宝塔面板卸载 + 数据清理使用下面官方提供的一键命令可以卸载宝塔面板 + 清除数据。wget http://download.bt.cn/install/bt-uninstall.sh sh bt-uninstall.sh面板 + 环境 + 数据就都没了。如果想确认一下,那么可以看看 /www 这个目录还在不在,还在的话自己手动删除这个目录即可。三、直接重装即可卸载面板最彻底的方法当然是重装系统了,重装解君愁。重装方法就不多说了,各个 VPS 商家基本都可以在后台一键重装。
2023年10月21日
5 阅读
0 评论
0 点赞
2023-10-21
PHP判断自动识别PC电脑与WAP移动端进行不同的页面访问
新建一个index.php文件,并且让这个文件夹优先读取index.php,在这个页面下写入如下代码:这个代码是通过浏览器的模式来进行页面读取,“/tpl/m/”放置了移动端的模板,“/tpl/pc/”放置了PC端的模板,如果是PC端进入的,读取/tpl/pc/index.html文件,如果是移动端进入的,读取/tpl/m/index.html文件,当然这两个文件夹是可以更改的,大家随便来,文件夹地址改了之后记得改一下代码就好了,好用的话给个赞哦!
2023年10月21日
0 阅读
0 评论
0 点赞
2023-10-21
搭建一个国内高可用的IPFS网关节点,低价打造去中心化无限存储节点(理论)
前言首先介绍一下IPFS(InterPlanetary File System)中文称为星际文件系统,是一个旨在实现文件的分布式存储、共享和持久化的网络传输协议。IPFS是WEB 3.0时代的基石之一,作为一个有着悠久历史的开源分布式存储系统,有着最为广泛的web 3.0的应用。我们可以通过IPFS的客户端或者IPFS网关来访问存在于该系统上的文件。也可以通过主动的分享自己的文件将文件分发至全世界。当你使用IPFS时你可以通过客户端利用P2P网络进行文件传输,如果有人不知道IPFS或者没有条件的情况下也可以采用传统的HTTP服务通过其他人公开提供的网关来获取你想要的内容。而这种模式就是我们今天要说的IPFS gateway(网关)。目前IPFS的网关大多数都是国外节点,国内用户使用极其困难。你可以通过公关网关查询网页查看当前可用的公开网关。IPFS公开网关查询:https://ipfs.github.io/public-gateway-checker/你可以在其中挑选一个适合自己的网关进行使用。不过就我个人而言大部分网关的国内连接质量都令人捉急。所以今天我给大家带来如何在境内搭建一个自己的网关。IPFS官网:ipfs.tech|ipfs.io简介先简单说一下IPFS网关的工作原理,IPFS本身是一个P2P的文件传输系统,网关则是其提供的通俗易用的一个功能,可以让人通过http访问IPFS系统上的内容。当我们使用网关访问一个IPFS上的数据时,服务器后台之中的IPFS节点服务首先会在本地搜索是否有该数据,如果没有就去给连接的其他IPFS节点发送该数据的CID数据,其他节点有的话就会先拉取到本地节点然后再通过网关来提供给用户。你可以将IPFS网关看成是BT客户端的提供的Web服务器。简单了解IPFS网关的功能之后我们来自建一个试试看搭建IPFS网关IPFS节点部署你可以部署多个节点,每个节点数据可以不同也可以相同,看你需要什么效果。我这里用腾讯云的境内轻量服务器做演示。如果是面对境外服务其实可以直接用上面提到的公开的网关。境内因为带宽价格昂贵所以几乎不存在公开的网关。服务器配置由于IPFS存储时会把数据切分成1MB或者更小的数据块,每个数据块都会分配一个CID(content identifier)。读写这些数据的时候还需要对数据进行处理所以服务器CPU不能太弱鸡,最起码也得是2C起步,内存不得低于2GB。我这里作为演示的机器为2C4G。至于硬盘大小的话就得看你自己需要存储的数据了。一般服务的话可以大致估算一下一个月内的常用数据有多少,比方说我是存图片,每个月大概10GB的新图还有5个GB的热门访问图片,那么我硬盘大小只要超过(10+5)/0.7=21.4GB就差不多够用了。其他数据你可以继续放硬盘也可以定期存储到filecoin链上,只需要一点FIL作为交易的gas费即可(目前有很多免费提供存储提供商)。至于本地存储的数据如果超过我们给的限定就会删除掉部分冷门数据以腾出空间。腾讯云轻量服务器活动价:我准备的是2C4G6M。镜像选择的是宝塔。购买完成之后我们需要开放一些IPFS需要用到的端口8080端口(默认网关端口)4001(节点通信端口)5001(API节点)进入服务器控制台选择防火墙-添加规则UDP这几个端口可开可不开。如果经常连接其他节点和其他节点互通数据建议UDP协议也打开。如果有大量数据存储需求可以买额外的云硬盘然后通过控制台挂载到服务器上后面IPFS初始化的时候要注意一下先设置环境变量。不然IPFS初始化之后会默认配置在系统盘。读写数据全放系统盘很容易占满。IPFS初始化官方教程地址:https://docs.ipfs.tech/install/command-line/#official-distributions1、下载安装服务1.1、下载压缩包(选择合适的下载源)wget https://dist.ipfs.tech/kubo/v0.15.0/kubo_v0.15.0_linux-amd64.tar.gz (官网) wget https://github.com/ipfs/kubo/releases/download/v0.15.0/kubo_v0.15.0_linux-amd64.tar.gz (GitHub) wget https://ghproxy.com/https://github.com/ipfs/kubo/releases/download/v0.15.0/kubo_v0.15.0_linux-amd64.tar.gz (GitHub下载加速服务适合国内)1.2、解压tar -xvzf kubo_v0.15.0_linux-amd64.tar.gz1.3、进入kubo文件夹并如下安装脚本cd kubobash install.sh1.4、测试IPFS是否正确安装ipfs --version这样就是安装完成了。2、初始化配置2.1、设置环境变量并初始化如果你直接初始化的话IPFS会直接在当前用户文件夹下生成一个./ipfs隐藏文件夹。如果你想初始化在其他指定硬盘/文件夹就需要先设置环境变量再初始化假设我们要设置的目录为/root/ipfs先创建文件夹mkdir /root/ipfs设置环境变量并初始化export IPFS_PATH=/root/ipfsipfs init这样就是初始化配置成功了。3、快速开始3.1、查看说明ipfs cat /ipfs/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/readme3.2 基础功能3.2.1 添加文件/文件夹ipfs add filename (添加文件至ipfs节点)ipfs add -r dir (添加文件夹至ipfs节点)我一共添加了三个文件分别是1.png 1.mp4 1.txt 图片、视频、文档都有,返回的Qm开头的就是文件的CID,我们后面用网关访问就需要用到CID了。如图所示添加相同文件CID的不变,文件夹内每个文件都有单独的CID,文件夹本身也有个CID并保持了原有的结构。root@VM-8-14-debian:~/testdata# ipfs add -r data added QmZ8dHcccdqNBNgEHKnSMCVjAAhLc293tmhDZZcptfF5eD data/1.mp4 added Qmf7MKAKynNNt12EZyBNFWhvDn39y2P8pZ9tAaEtDRVZ1f data/1.png added QmYWAifyw2V5dEq7c5GgdSPffeKoYXQZggnYzw5RbXpig4 data/1.txt added Qme6r14w9pyGrjMU9UUzkNAuSmCY3d1svZtvNRfyyhNHFL data3.2.2 读取数据命令行下只能读取文本数据,我们以上面的1.txt为例ipfs cat QmYWAifyw2V5dEq7c5GgdSPffeKoYXQZggnYzw5RbXpig43.2.3 长期保存某数据根据IPFS的设置如果超过设置容量的阈值就会自动删除部分冷门数据,所以如果想长期保存某些数据还需要进行额外操作。ipfs pin add CID (pin文件至本地存储)ipfs pin ls [CID] (列出所有文件/有CID参数时列出该文件状态)3.2.4、删除数据ipfs pin rm CID这个没啥好说的。更多其他的命令可以自行探索IPFS网关部署启动IPFS建议先安装screen ,在screen session里执行,这个命令不能直接后台运行,这也算是比较蛋疼的一点。# 安装screenapt install screen -y (ubuntu/debian)yum install screen -y (centos)# 用screen新建一个sessionscreen -R ipfs# 开启ipfsipfs daemon然后Ctrl +A ,Ctrl +D挂起screen即可这样就是成功启动了。但是目前还不能直接通过IP访问,我们可以进行反代或者直接修改配置文件,由于服务器安全性问题,这里我建议直接反向代理,不要修改配置。公网访问网关1、反向代理反向代理也没啥好说的,解析域名到服务器IP,然后先申请SSL证书然后再开启反向代理,把网关地址127.0.0.1:8080反向代理即可。然后直接访问域名/ipfs/CID即可如我想访问上面添加的data文件夹,它的CID为:Qme6r14w9pyGrjMU9UUzkNAuSmCY3d1svZtvNRfyyhNHFL。假设我的域名是ipfs.2demo.top则访问https://ipfs.2demo.top/ipfs/Qme6r14w9pyGrjMU9UUzkNAuSmCY3d1svZtvNRfyyhNHFL这样你就成功搭建了一个境内可用的IPFS网关了。2、修改配置如果你只开放网关的话只要修改配置里的Address.Gateway,如果你要用图形界面(webui)还需要修改Address.API和API.HTTPHeaders一个修改为0.0.0.0,一个修改为服务器内网IP(没有内网IP就用公网IP)就行要用webui可以先进入IP:5001/webui会自动弹出来一个修改配置的命令,复制粘贴然后重启ipfs即可复制2之中的命令到服务器运行一下然后重启ipfs之后就会显示已连接IPFS了你可以查看ipfs节点状态,文件,节点连接情况等。不过还是不建议公开webui,没有鉴权很容易导致别人乱存东西。安装到服务创建文件 /etc/systemd/system/ipfs.service 写入[Unit]Description=IPFS DaemonAfter=syslog.target network.target remote-fs.target nss-lookup.target[Service]Type=simpleExecStart=/usr/local/bin/ipfs daemon --enable-namesys-pubsubUser=milton[Install]WantedBy=multi-user.target然后通过systemctl添加systemctl daemon-reloadsystemctl enable ipfs systemctl start ipfs systemctl status ipfs修改存储空间限制可以通过修改Datastore.StorageMax来限制ipfs占用的硬盘空间大小,默认是10GB结语ipfs作为一个分布式存储可以说是自一开始就很有话题性,我们可以轻松的通过一个节点连接到全球,获取全球的数据,或者分发数据。需要注意的是如果你的数据被其他节点保存之后,你再删除自己节点内的数据也是无效的,其他人仍然能够通过其他节点访问该数据。反之,如果一份数据所存在的节点全都下线了或者删除了该数据那么也无法访问到该数据了。尽管国内很多宣传ipfs服务的都说存上去就是去中心化了就永久保存了。这都是屁话,重要数据建议多备份,私密数据可以先加密再上传。我之所以用IPFS是因为我可以白嫖filecoin那些存储,只要我定期存一次数据就能直接不受限于我的服务器硬盘了。相对而言如果访问量高的话会导致带宽占用过多,从其他节点获取数据会让CPU保持一个较高的负载。但是我用的轻量服务器,上传带宽远小于下载带宽,本身也不是为了高并发去的,所以无所谓。要想体验好还是建议选个大点的硬盘,能够尽量存储更多的热门数据,部分低访问的数据存在其他节点即可。
2023年10月21日
4 阅读
0 评论
0 点赞
2021-08-20
wordpress主循环显示文章列表不同样式的方法
假如我们选择首页显示最新文章,并且:第一篇文章显示摘要,后面的只显示标题。。。还有第一篇文章显示广告之类的。。。那么如何利用循环控制呢?1、首页显示文章的代码一般都是:<?php if (have_posts()) : ?> <!--检查是否有文章如果有,继续执行,没有就跳到 else 那里--> <?php while (have_posts()) : the_post(); ?> <!--开始准备文章内容,开始循环,每次循环输出一篇文章--> 此处显示文章内容或标题之类的。。 <?php endwhile ; ?> <!-- while 循环结束--> <?php else : ?> 此处显示未找到文章时的信息,比如404相关 <?php endif ; ?> <!-- if 结束-->2、要想精确的控制每篇文章,我们先在循环前定义一个变量 $ashu_i=1 来计数,变量名随便,然后每循环一次,$ashu_i加1,例子我把index.php中的代码改成下面的--<?php if (have_posts()) :$ashu_i=0;?> <?php while (have_posts()) : the_post();$ashu_i++;?> <?php echo "这是第 $ashu_i 篇文章:<br/>";?> <?php the_title();?> <?php echo "<hr>"; <?php endwhile; ?> <?php else : ?> 此处显示未找到文章时的信息,比如404相关 <?php endif; ?>上面的例子就给每篇文章来了个简单控制。3、具体要想让第一篇文章显示摘要,而余下的显示标题--代码:<?php if (have_posts()) :$ashu_i=0;?> <!--检查是否有文章,并定义计数变量初始值为0 --> <?php while (have_posts()) : the_post();$ashu_i++;?> <!-- 开始循环,第一次循环$sahu_i为1,第二次为2,依次。。 --> <?php if($ashu_i==1){?> <!-- 如果是第一篇文章 --> <?php the_content();}else{?> <!-- 显示内容 --> <?php the_title();}?> <!-- 如果不是第一篇显示标题 --> <?php endwhile; ?> <!-- 一次while循环结束 --> <?php else : ?> <!--如果没有文章--> 此处显示未找到文章时的信息,比如404相关 <?php endif; ?> <!--if结束 -->
2021年08月20日
5 阅读
0 评论
0 点赞
2021-08-20
如何在 WordPress 文章列表中完美的插入一篇或几篇广告跳转文章
前段时间在知更鸟那看到一个非常有趣的事,他博客首页中文章列表处的第一篇文章居然是个广告,点击以后不是进入他博客的文章页,而是跳到了一个广告页面,欺骗性简直逆天了!随之而来的广告点击量可想而知了~通常我们想达到这样的效果的话,就需要设置一个额外的广告位(方法见下面的额外补充 1),如果你想放在不同的地方的话(如,首页的不同结构中或侧边栏的不同结构中),则需要将各个广告位的结构调成与它们一样才行....昨天,在胖子马博客发现了一个非常完美的方法,操作起来远没有上面描述的这样复杂!可以在文章列表中的任意位置插入一篇或多篇广告跳转文章,完美的与主题结构融合,与主题列表的展现形式一模一样,不用去额外的改变任何结构!而且可以一键无痕的将发布的任何文章变成广告跳转文章!实现过程非常简单,利用了 wordpress 强大的自定义字段~首先,打开主题文件 functions.php,粘贴下面的代码到里面:/** * 如何在 WordPress 文章列表中完美的插入一篇或几篇广告跳转文章 * https://www.ilxtx.com/link-to-some-external-ressource-naturally.html */ function lxtx_post_link() { global $post; $thePostID = $post->ID; $post_id = get_post($thePostID); $title = $post_id->post_title; $perm = get_permalink($post_id); $post_keys = array(); $post_val = array(); $post_keys = get_post_custom_keys($thePostID); if (!empty($post_keys)) { foreach ($post_keys as $pkey) { if ($pkey=='url1' || $pkey=='title_url' || $pkey=='url_title') { $post_val = get_post_custom_values($pkey); } } if (empty($post_val)) { $link = $perm; } else { $link = $post_val[0]; } } else { $link = $perm; } echo $link; }再把主题中输出文章固定链接地址的函数:the_permalink() 替换为我们上面自定义的这个函数:lxtx_post_link() 即可!最后,当你要将文章链接到博客之外的页面时,只要在这篇文章中创建自定义字段url1或title_url或url_title ,再输入外部 URL 地址作为值就可以了。完成这个操作后,当你发表一篇文章时,系统会查找字段url1或title_url或url_title的值,如果找到,那么就会直接链接到外部站点而不是本博客文章;如果没有找到自定义字段值,就会简单地显示链接本身。如下图,图中的这篇“测试文章”的链接就是指向外链的!你看不出来吧~~{callout color="#f0ad4e"}友情提示:1.可以把多篇文章变为广告跳转文章哦,而且通过调节时间,可以在任意位置显示。 这样访客在浏览你的文章时,肯定想不到这是一个广告!当然这样做肯定不是很合适啦~~2.上面的代码还可以进一步精简的,我感觉不需要设置这么多的自定义字段~{/callout}额外补充 1 WordPress 的分类页、Search 页,Tag 页等输出的文章列表时,如果想在中间位置(比如第 5 个文章后面)出现,可以用下面的代码:<?php if ($wp_query->current_post == 4) : ?> <div> 广告代码 </div> <?php endif; ?> <?php if ($wp_query->found_posts < 5 and $wp_query->current_post == ($wp_query->found_posts - 1)): ?> <div> 广告代码 </div> <?php endif; ?>$current_post 属性,必须用在 Loop 里面,表示当前显示的文章索引值;它是以 0 为起始值,如果想要在第 5 个文章后面,$wp_query->current_post 等于 4 即可。$found_posts 属性,表示按 $wp_query 匹配的文章总数。上面的代码只能放在 Loop 里面,比如 <?PHP if (have_posts()) : while (have_posts()) : the_post(); ?> 后面,表示广告代码将在文章列表的第 5 个文章后面出现,如果列表匹配出来的文章总数不到 5 个,就在列表的最后位置出现广告代码。额外补充 2 在陌小雨博客那又发现了另一个方法~ 只需要在发布文章时切换成文本,然后加入如下代码即可:<script type="text/javascript">document.location = "https://www.ilxtx.com"</script>注意替换网址为你想跳转的链接。可用于老文章失效,跳转到新文章哦~额外补充 3:WordPress 在文章内容中间插入广告 下面的代码可以实现在文章的第几段后面插入广告,注意按照下面的注释修改广告代码和段落数,转自WP 大学。/** * WordPress 在文章内容中间插入广告 * https://www.ilxtx.com/link-to-some-external-ressource-naturally.html */ //在文章内容的第二段后面插入广告 add_filter( 'the_content', 'lxtx_prefix_insert_post_ads' ); function lxtx_prefix_insert_post_ads( $content ) { $ad_code = '<div>添加你的广告代码</div>'; if ( is_single() && ! is_admin() ) { // 修改 2 这个段落数 return lxtx_prefix_insert_after_paragraph( $ad_code, 2, $content ); } return $content; } // 插入广告所需的功能代码 function lxtx_prefix_insert_after_paragraph( $insertion, $paragraph_id, $content ) { $closing_p = '</p>'; $paragraphs = explode( $closing_p, $content ); foreach ($paragraphs as $index => $paragraph) { if ( trim( $paragraph ) ) { $paragraphs[$index] .= $closing_p; } if ( $paragraph_id == $index + 1 ) { $paragraphs[$index] .= $insertion; } } return implode( '', $paragraphs ); }
2021年08月20日
27 阅读
0 评论
0 点赞
2020-08-20
WordPress实现外链加密和伪静态跳转代码
外链转内链地址Base64加密地址的详细步骤:1、将以下跳转代码保存为 go.php,然后在网站根目录新建一个 go 文件夹,并把 go.php 上传到 go 文件夹中:<?php if(strlen($_SERVER['REQUEST_URI']) > 255 || strpos($_SERVER['REQUEST_URI'], "eval(") || strpos($_SERVER['REQUEST_URI'], "base64")) { @header("HTTP/1.1 414 Request-URI Too Long"); @header("Status: 414 Request-URI Too Long"); @header("Connection: Close"); @exit; } //通过 QUERY_STRING 取得完整的传入数据,然后取得 url=之后的所有值,兼容性更好 $t_url = preg_replace('/^url=(.*)$/i','$1',$_SERVER["QUERY_STRING"]); //此处可以自定义一些特别的外链,不需要可以删除以下 5 行 if($t_url=="febdays" ) { $t_url="https://www.febdays.com"; } elseif($t_url=="news") { $t_url="https://www.febdays.com/news"; } //数据处理 if(!empty($t_url)) { //判断取值是否加密 if ($t_url == base64_encode(base64_decode($t_url))) { $t_url = base64_decode($t_url); } //对取值进行网址校验和判断 preg_match('/^(http|https|thunder|qqdl|ed2k|Flashget|qbrowser):\/\//i',$t_url,$matches); if($matches){ $url=$t_url; $title='页面加载中,请稍候...'; } else { preg_match('/\./i',$t_url,$matche); if($matche){ $url='http://'.$t_url; $title='页面加载中,请稍候...'; } else { $url = 'http://'.$_SERVER['HTTP_HOST']; $title='参数错误,正在返回首页...'; } } } else { $title = '参数缺失,正在返回首页...'; $url = 'http://'.$_SERVER['HTTP_HOST']; } ?> <HTML> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="robots" content="noindex, nofollow" /> <noscript><meta http-equiv="refresh" content="1;url='<?php echo $url;?>';"></noscript> <script> function link_jump() { //禁止其他网站使用我们的跳转页面 var MyHOST = new RegExp("<?php echo $_SERVER['HTTP_HOST']; ?>"); if (!MyHOST.test(document.referrer)) { location.href="http://" + MyHOST; } location.href="<?php echo $url;?>"; } //延时 1S 跳转,可自行修改延时时间 setTimeout(link_jump, 1000); //延时 50S 关闭跳转页面,用于文件下载后不会关闭跳转页的问题 setTimeout(function(){window.opener=null;window.close();}, 50000); </script> <title><?php echo $title;?></title> <style type="text/css"> body{background:#555}.loading{-webkit-animation:fadein 2s;-moz-animation:fadein 2s;-o-animation:fadein 2s;animation:fadein 2s}@-moz-keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@-o-keyframes fadein{from{opacity:0}to{opacity:1}}@keyframes fadein{from{opacity:0}to{opacity:1}}.spinner-wrapper{position:absolute;top:0;left:0;z-index:300;height:100%;min-width:100%;min-height:100%;background:rgba(255,255,255,0.93)}.spinner-text{position:absolute;top:45%;left:50%;margin-left:-100px;margin-top:2px;color:#000;letter-spacing:1px;font-size:20px;font-family:Arial}.spinner{position:absolute;top:45%;left:50%;display:block;margin-left:-160px;width:1px;height:1px;border:20px solid rgba(255,0,0,1);-webkit-border-radius:50px;-moz-border-radius:50px;border-radius:50px;border-left-color:transparent;border-right-color:transparent;-webkit-animation:spin 1.5s infinite;-moz-animation:spin 1.5s infinite;animation:spin 1.5s infinite}@-webkit-keyframes spin{0%,100%{-webkit-transform:rotate(0deg) scale(1)}50%{-webkit-transform:rotate(720deg) scale(0.6)}}@-moz-keyframes spin{0%,100%{-moz-transform:rotate(0deg) scale(1)}50%{-moz-transform:rotate(720deg) scale(0.6)}}@-o-keyframes spin{0%,100%{-o-transform:rotate(0deg) scale(1)}50%{-o-transform:rotate(720deg) scale(0.6)}}@keyframes spin{0%,100%{transform:rotate(0deg) scale(1)}50%{transform:rotate(720deg) scale(0.6)}} </style> </head> <body> <div class="loading"> <div class="spinner-wrapper"> <span class="spinner-text">页面加载中,请稍候...</span> <span class="spinner"></span> </div> </div> </body> </html>其中第12行代码中自定义的一些特别外链,这个功能特别好,因为我们每个站点都或多或少有一些特殊的外链,如果也变成 Base64 加密地址就不好看了,所以此处我们可以多添加几个比较有个性化的外链跳转地址。2、将以下代码添加到我们的 Nginx 服务器相应配置文件中的 location / { 前面,保存配置文件后平滑重启 Nginx 即可:rewrite ^/goto/(.*)$ /go/go.php?url=$1 last;Apache服务器修改根目录.htaccess文件,添加以下代码RewriteRule ^goto/(.*)$ /go/go.php?url=$1 [L]3、替换文章原外链跳转地址格式(/go/?url=外链)变更为新的外链格式(/goto/ base64 加密串),我们只需要将以下代码代替主题文件的 functions.php 文件中原先给外部链接加上跳转的代码即可: //文章外链跳转伪静态版 add_filter('the_content','link_jump',999); function link_jump($content){ preg_match_all('/<a(.*?)href="(.*?)"(.*?)>/',$content,$matches); if($matches){ foreach($matches[2] as $val){ if(strpos($val,'://')!==false && strpos($val,home_url())===false && !preg_match('/\.(jpg|jepg|png|ico|bmp|gif|tiff)/i',$val) && !preg_match('/(ed2k|thunder|Flashget|flashget|qqdl):\/\//i',$val)){ $content=str_replace("href="$val"", "href="".home_url()."/goto/".base64_encode($val).""",$content); } } } return $content; }4、对于评论的外链,在function文件添加如下函数。//评论者链接重定向 function commentauthor($comment_ID = 0) { $url = get_comment_author_url( $comment_ID ); $author = get_comment_author( $comment_ID ); if ( empty( $url ) || 'http://' == $url ) { echo $author; } else { if (!preg_match(home_url(),$url)) { echo "<a href='".home_url()."/goto/".base64_encode($url)."' rel="nofollow noopener noreferrer" target='_blank' class='url'>$author</a>"; } else { echo "<a href='$url' target='_blank' class='url' rel="noopener noreferrer">$author</a>"; } } } }5、将下载原外链跳转地址格式(/go/?url=外链)变更为新的外链格式(/goto/ base64 加密串),我们首先将以下代码添加到主题文件 functions.php 文件最后一个?>(记得修改代码中的 febdays.com 为自己的域名)。 // 下载外链跳转 function links_nofollow($url) { if(strpos($url,'://')!==false && strpos($url,'febdays.com')===false && !preg_match('/(ed2k|thunder|Flashget|flashget|qqdl):\/\//i',$url)) { $url = str_replace($url, home_url()."/goto/".base64_encode($url),$url); } return $url; }然后将主题文件中关于下载链接的地址改为以下代码即可:<?php echo links_nofollow($url);?>不同其他主题下载链接文件位置不同,请自行寻找,然后将四个下载链接地址分别改成上述相对应的代码即可,如将第一个下载链接地址:<?php echo $url1; ?>改为:<?php echo links_nofollow($url1);?>至此,外链及下载地址均变成新的跳转格式(/goto/ base64 加密串),最难得的是原旧跳转格式(/go/?url=外链)依然有效.
2020年08月20日
8 阅读
0 评论
0 点赞
1
...
6
7