替换当前URL的一部分

时间:2014-08-07 20:02:35

标签: javascript

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

function geturl(){
 var url = window.location.href;
 alert(url.replace('/category/', '/'));
}

问题在于我必须定义静态类别名称,但它可以是任何东西。 如果有五个" /"如何动态删除/ category / part;在window.location.href?

3 个答案:

答案 0 :(得分:1)

你走了:

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('your url')调用此函数。如果没有通过网址,则会使用该网页的当前网址。正则表达式将替换URL的路径部分开头的字符串,该部分位于2 /个字符内。

答案 1 :(得分:0)

前言:这应该由网络服务器(而不是您的网页)处理,如Mike所述。


RegExPal似乎同意这一点:

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

url.replace(/\/[^/.]+?\//, "");

注意:RegExp中不包含“g”只允许替换第一个实例。


话虽如此,您不需要RegEx。您可以split,然后join网址:

var parts = x.split("/");
parts.splice(3,1);
window.location.href = parts.join("/");

答案 2 :(得分:0)

它将从网址中删除类别

 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);
    }