如果某人登录的网页上有一个以字符串开头的网址,我想将其重定向到另一个网页。
例如,访问者登陆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);
}
这感觉应该是直截了当的,但我在拼凑这些碎片时遇到了麻烦。我很感激任何帮助。提前谢谢!
答案 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重定向,则可以使用服务器脚本。
上面的脚本也可以正常工作,只要客户端允许编写脚本。