Javascript 替换当前URL的一部分

Javascript 替换当前URL的一部分,javascript,Javascript,我想在404页面上添加一个修改过的链接,因为我将permalink结构从domain.tld/category/title移动到domain.tld/title。 现在,当访问者找到指向domain.tld/category/title的旧链接时,她/他将看到404页面,并且应该有指向domain.tld/title的动态链接。 如果window.location.href包含五个“/”(因为有五个“/”,而我的新永久链接结构将不会有五个“/”,而只有四个“/”,则应生成此链接。 我知道我可以用

我想在404页面上添加一个修改过的链接,因为我将permalink结构从domain.tld/category/title移动到domain.tld/title。 现在,当访问者找到指向domain.tld/category/title的旧链接时,她/他将看到404页面,并且应该有指向domain.tld/title的动态链接。 如果window.location.href包含五个“/”(因为有五个“/”,而我的新永久链接结构将不会有五个“/”,而只有四个“/”,则应生成此链接。 我知道我可以用以下代码替换(删除)类别部件:

function geturl(){
 var url = window.location.href;
 alert(url.replace('/category/', '/'));
}
问题是我必须定义一个静态类别名称,但它可以是任何东西。 当window.location.href中有五个“/”时,如何动态删除/category/part?

给你:

function geturl(url){
    if (typeof url === 'string'){
        var a = document.createElement('a');
        a.href = url;
        url = a.pathname;
    }
    else url = window.location.pathname;
    alert(url.replace(/^\/[^\/]+\//, '/'));
}
使用
geturl(“您的url”)
调用此函数。如果没有传递url,它将使用页面的当前url。正则表达式将替换url路径部分开头的字符串,该部分包含2个
/
字符。

前言:这确实应该由web服务器(而不是您的网页)处理如前所述


似乎同意这一点:

var url = "http://www.domain.tld/category/title/";

url.replace(/\/[^/.]+?\//, "");
var parts = x.split("/");
parts.splice(3,1);
window.location.href = parts.join("/");
注意:在RegExp中不包含“g”将只允许替换第一个实例


也就是说,您不需要正则表达式。您可以只
拆分
,然后
加入
URL:

var url = "http://www.domain.tld/category/title/";

url.replace(/\/[^/.]+?\//, "");
var parts = x.split("/");
parts.splice(3,1);
window.location.href = parts.join("/");

它将从url中删除类别

 function geturl(){
     var url = window.location.pathname; // get url from browser
    // var url = 'http://www.domain.tld/category/title/'; // get url from browser
     var url_array = url.split('/category/');
     var newurl = url_array[0]+"/"+url_array[1];
     alert(newurl);
    }

听起来像是web服务器应该重定向的东西。丑陋的解决方案:url.replace(/\/\/(.+)\/(.+)\/(.+)\/(.+)\/,“/$1/$3”);…解释在哪里?(对不起,假设“donde esta”足够通俗易懂。。)我不好!)不是我,但可能是因为你一开始就有一个
^
(这与任何
窗口都不匹配。location.href
。收回了我的否决票,因为这现在起作用了,但我仍然不认为它完全回答了这个问题,因为url包含多少段没有条件。我刚刚意识到OP意味着url中的斜杠总数为4和5。谢谢,@DJDavid98!复制粘贴错误。:)更新。