silverstripe/externallinks

为 SilverStripe CMS 添加跟踪断开的外部链接

安装次数: 194,594

依赖者: 5

建议者: 1

安全性: 0

星标: 10

关注者: 6

分支: 18

开放性问题: 13

类型:silverstripe-vendormodule


README

CI Silverstripe supported module

简介

外部链接模块是一个任务和 ModelAdmin,用于跟踪和报告断开的外部链接。

维护者联系方式

功能

  • 向断开链接报告添加外部链接
  • 添加任务以跟踪外部断开链接

安装

composer require silverstripe/externallinks

报告

新增了一个名为“外部断开链接报告”的新报告。在查看此报告时,用户可以点击“创建新报告”按钮,这将触发一个ajax请求以启动报告运行。

在此初始ajax请求中,该模块将根据包含的模块执行以下一项操作:

  • 如果已安装queuedjobs模块,将启动一个新队列任务。queuedjobs模块将随后管理任务的进度。
  • 如果queuedjobs模块不存在,则控制器将回退到在后台运行buildtask。这不太稳定,因为在此过程中出现故障或错误将中止运行。

在两种情况下,后台任务将遍历系统中的每个页面,检查所有外部URL,并检查请求每个URL返回的状态码。如果URL返回的响应代码被认为是“断开”(定义为小于200或大于302),则将分配给该URL的 ss-broken css 类,并在报告中添加一项。如果之前断开的链接已被纠正或修复,则删除此类。

在实际生成的报告中,用户可以点击任何断开链接项,在浏览器中查看链接,或在CMS中编辑包含该链接的页面。

报告运行时,当前状态将在报告详细信息页面上显示,包括状态。用户可以离开此页面,稍后再返回以查看此报告的持续状态。

在先前的报告完成之前,可能不会生成后续报告。

开发任务

运行以下任务 http://path.to.silverstripe/dev/tasks/CheckExternalLinksTask 以检查网站的外部断开链接。

队列任务

如果您已安装queuedjobs模块,您可以设置任务以定期运行。

白名单代码

如果您想忽略或允许某些HTTP代码,可以通过在mysite/_config中的config.yml文件中设置ignore_codes来实现。

SilverStripe\ExternalLinks\Tasks\CheckExternalLinksTask:
  ignore_codes:
    - 401
    - 403
    - 501

跟随301重定向

您可能想要跟随重定向的URL,例如从http重定向到https可能会给出一个错误的阳性结果,因为301的http代码将被返回,这将被归类为有效链接。

要允许跟随重定向,请在您的config.yml中设置以下配置:

# Follow 301 redirects
SilverStripe\ExternalLinks\Tasks\CurlLinkChecker:
  follow_location: 1

绕过缓存

默认情况下,任务将尝试缓存任何结果。可以通过在config.yml中设置以下配置来绕过缓存:

# Bypass SS_Cache
SilverStripe\ExternalLinks\Tasks\CurlLinkChecker::
  bypass_cache: 1

头部信息

您可能需要设置在 CURL 请求中发送的头部信息(例如:user-agent),以避免网站拒绝请求,认为它是机器人。您可以在 config.yml 中使用以下配置来设置它们。

# Headers
SilverStripe\ExternalLinks\Tasks\CurlLinkChecker:
  headers:
    - 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:53.0) Gecko/20100101 Firefox/53.0'
    - 'accept-encoding: gzip, deflate, br'
    - 'referer: https://www.domain.com/'
    - 'sec-fetch-mode: navigate'
    ...