服务热线
1888888888
作者:文煞发布时间:2023-06-01分类:Discuz笔记浏览:592
很久以前用Discuz!程序做网站的时候遇到这样一个情况,下载安装了Discuz!蜘蛛统计插件,在使用dDiscuz!蜘蛛统计插件的时候,蜘蛛爬取记录里爬取的URL是http带443端口的链接而不是直接爬取https。
一直以为是宝塔的原因,以为是宝塔没有告诉蜘蛛本站启用的是443ssl端口,使用https协议直接访问的,还跑去宝塔求助。其实这是一个乌龙。 那么问题来了:为什么蜘蛛爬取http带443端口的页面而不直接爬取https?其实并不是,只是插件代码的问题,插件是在组装URL链接的时候的一个毛病。就是80端口采用http协议组装URL,但是开启https的网站使用的是443端口,当不是80端口的时候,代码默认将端口号添加进了URL里。
百度:http://www.wensha.info:443/bbssub_49_1_1.html
谷歌:http://www.wensha.info/bbssub_50_1_1.html
...............
正常的应该是:
百度:https://www.wensha.info/bbssub_49_1_1.html
谷歌:https://www.wensha.info/bbssub_50_1_1.html
我们点击Discuz!蜘蛛统计插件记录里的前面带:443端口的链接,出现以下提示:
Bad Request Your browser sent a request that this server could not understand. Reason: You're speaking plain HTTP to an SSL-enabled server port. Instead use the HTTPS scheme to access this URL, please. Apache Server at SSL.www.wensha.info Port 80
这里我使用的是宝塔软件!
在插件合适位置添加以下代码:
$port = $_SERVER["SERVER_PORT"];//端口 $useragent = strtolower($_SERVER['HTTP_USER_AGENT']);//userAGENT $url = "http://".$_SERVER["SERVER_NAME"]; if ($port=="443"){ $url= "https://".$_SERVER["SERVER_NAME"]; }
这里在Discuz!蜘蛛统计插件里增加了一个判断,判断是不是443端口,是443端口则把URL格式改为https://....的格式就可以了。
原教程来自‘文煞PHP笔记网’:https://www.wensha.info/post/36.html
分享:
支付宝
微信