如何在 Sphinx 中使用 nitpick_ignore_regex 和 linkcheck 解决 403 错误?

问题描述 投票:0回答:1

我在 Sphinx 中使用

make linkcheck
来查找文档(.rst 文件)中损坏或有其他问题的链接。我修复了所有链接,但两个 Intel 链接不断出现以下 403 错误消息:

(CustomizingTheWorkflow/ConfigWorkflow: line 1109) broken    https://www.intel.com/content/www/us/en/docs/cpp-compiler/developer-guide-reference/2021-10/thread-affinity-interface.html - 403 Client Error: Forbidden for url: https://www.intel.com/content/www/us/en/docs/cpp-compiler/developer-guide-reference/2021-10/thread-affinity-interface.html
(BuildingRunningTesting/ContainerQuickstart: line   26) broken    https://www.intel.com/content/www/us/en/developer/tools/oneapi/hpc-toolkit-download.html - 403 Client Error: Forbidden for url: https://www.intel.com/content/www/us/en/developer/tools/oneapi/hpc-toolkit-download.html

但是,这两个链接在浏览器中都可以正常工作,并且来自终端的

"curl -I https://link..."
命令会返回 200 状态代码。

我尝试使用

nitpick_ignore_regex
忽略链接,但我想我一定做错了什么,因为错误消息仍然出现。目前,我的
conf.py
文件中有以下内容:

nitpick_ignore_regex = [r'https://www\.intel\.com/content/www/us/en/docs/cpp\-compiler/developer\-guide\-reference/2021\-10/thread\-affinity\-interface\.html',
                        r'https://www\.intel\.com/content/www/us/en/developer/tools/oneapi/hpc\-toolkit\-download\.html',
                       ]

我也尝试过使用 Sphinx 文档中形式(类型,目标)的元组,但我不确定什么“类型”或域是合适的,并且

r'.*:.*'
没有取得任何成功。我假设目标是链接,但也许我的正则表达式是错误的。我唯一能想到的另一件事是用户代理问题。我已经尝试过这两种(一次一种)但无济于事:

user_agent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36"
user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/9.0.2 Safari/601.3.9"

有人可以提出解决方案吗?除了猜测和检查之外,是否有更好的方法来解决相应的用户代理字符串或更详细的信息来确定“类型”/域?

documentation python-sphinx link-checking
1个回答
0
投票

nitpick_ignore_regex
不起作用,因为它仅影响内部交叉引用(在“挑剔模式”下)。

您应该使用

linkcheck_ignore
来代替。

这是一个使链接检查忽略有问题的链接的示例:

linkcheck_ignore = ['.*thread-affinity', '.*hpc-toolkit-download'] 
© www.soinside.com 2019 - 2024. All rights reserved.