如何在MediaWiki

问题描述

我想检测Mediawiki中的URL是否指向重定向。当我在en.wikipedia.org上运行以下脚本时:

let test = await fetch('https://en.wikipedia.org/wiki/Bruce_Wayne');
console.log(test.url);        // → https://en.wikipedia.org/wiki/Bruce_Wayne
console.log(test.redirected); // → false

但是,当我在地址栏中输入https://en.wikipedia.org/wiki/Bruce_Wayne时,我却被重定向https://en.wikipedia.org/wiki/Batman#Bruce_Wayne

如果网址重定向到其他文档,如何使用JavaScript检测?我可以找到而不获取整个文档吗?

解决方法

有关检测重定向的信息,请参见Response.redirectedResponse.url的文档。

您可以发出HEAD请求,以避免获取整个文档。但是,它将在跨域请求上触发CORS行为。您也可以使用Wikipedia的API来查看页面是否为重定向页面,而不是获取页面,但是这样做可能会降低您的速度并增加服务器的负载-Wikipedia已针对常规页面浏览进行了高度优化。

,

您可以尝试对Wiki API的单独请求,例如:https://en.wikipedia.org/w/api.php?action=query&titles=Wikipedia:!--&redirects&format=json&formatversion=2。 结果将是:

{
    "batchcomplete": true,"query": {
        "redirects": [
            {
                "from": "Wikipedia:!--","to": "Wikipedia:Manual of Style","tofragment": "Invisible comments"
            }
        ],"pages": [
            {
                "pageid": 33697,"ns": 4,"title": "Wikipedia:Manual of Style"
            }
        ]
    }
}

请注意query.redirects部分。 示例取自https://www.mediawiki.org/wiki/API:Query#Resolving_redirects