我想在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?
答案 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);
}