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