如何仅根据路径的一部分重定向网址?

时间:2019-07-19 08:21:02

标签: javascript redirect

让我解释一下我的意思:

我想从https://example.net/category/83745/my-first-post重定向到https://myredirect.net/my-first-post,但不考虑/ category / numbers /

此刻我正在使用它:

if(window.location.pathname == '/category/83745/my-first-post')
{
    window.location.href="https://myredirect.net/my-first-post";
}

它工作正常,但是正如我所描述的,我需要删除/ category / numbers /,因为它们可能有所不同,并且仅考虑 / my-first-post 这部分进行重定向。

谢谢。

4 个答案:

答案 0 :(得分:1)

您可以使用String的方法lastIndexOfslice

var path = window.location.pathname;
window.location.href = "https://myredirect.net" + path.slice(path.lastIndexOf('/') + 1);

答案 1 :(得分:-1)

您可以在路径名上运行正则表达式匹配

if(window.location.pathname.match(/my-first-post$/)) {
    window.location.href='/my-first-post';
}

有关正则表达式的更多信息:https://www.regular-expressions.info/

另一个用于构建和测试正则表达式的好工具:https://regex101.com/

答案 2 :(得分:-1)

使用正则表达式。

if(window.location.pathname.match(/\/category\/\d+\/my\-first\-post$/)
{
    window.location.href="https://myredirect.net/my-first-post";
}

答案 3 :(得分:-1)

如果您只想动态地忽略前两个部分,而只关心URL的最后一部分,那么请执行以下操作:

var stringContains = function (str, partial){
    return (str.indexOf(partial) > -1);
};

var url = '/category/83745/my-first-post';


if(stringContains(url, "/category")){
   var parts = a.split("/");
   window.location.href = parts[parts.length-1];
}