如果URL以字符串开头,则Javascript URL重定向

时间:2018-02-03 16:32:10

标签: javascript url redirect

如果某人登录的网页上有一个以字符串开头的网址,我想将其重定向到另一个网页。

例如,访问者登陆website.com/all-books/bookTitle 我想将它们重定向到website.com/bookTitle

但我也有website.com/all-books/而且我不希望访客在他们降落的情况下被重定向。

我尝试了这个,但它没有工作:

var fromUrl = '/all-books/';
var toUrl = '/';

var fromRegex = "^\\" + fromUrl + "\\/?$";
var match = location.pathname.match(new RegExp(fromRegex, 'i'));
if (match && !window.frameElement) {
  window.location.replace(toUrl);
}

这感觉应该是直截了当的,但我在拼凑这些碎片时遇到了麻烦。我很感激任何帮助。提前谢谢!

2 个答案:

答案 0 :(得分:0)

如果您可以粘贴到目前为止的相关代码,这将有所帮助。 这样的事情可能有所帮助:

var url = window.location.href;
var n = url.lastIndexOf('/');
var uniquekey = url.substring(n + 1);
window.location.replace("website.com/"+uniquekey);

答案 1 :(得分:0)

我认为你没有正确地使用正则表达式。

您必须正确过滤网址,如果匹配,请删除要禁用的目录来替换它。

试试这个:

const openedUrl = window.location.href;
let regexPattern = "http.+\/all-books\/.*";
const regexObj = new RegExp(regexPattern);

if(openedUrl.match(regexObj)){
    dirToRemove = "all-books/";
    indexOf = openedUrl.indexOf(dirToRemove);
    const newUrl = openedUrl.slice(0, indexOf) + openedUrl.slice(indexOf+dirToRemove.length);
window.location.replace(newUrl);

};

我仍然认为使用httpaccess文件可以更好地完成,以确保发生干净的重定向。此外,如果您使用node.js或python等来呈现网站,并且只是在此地址上返回302重定向,则可以使用服务器脚本。

上面的脚本也可以正常工作,只要客户端允许编写脚本。