重定向到JavaScript中的相对URL


363

我有一个问题:我想通过JavaScript重定向到上面的目录。我的代码:

location.href = (location.href).substr(0, (location.href).lastIndexOf('folder'));

该URL如下所示:

example.com/path/folder/index.php?file=abc&test=123&lol=cool

重定向仅影响以下内容:

example.com/path/&test=123&lol=cool

但是要拥有这个:

example.com/path/

我该怎么办?

Answers:


684

您可以执行相对重定向:

window.location.href = '../'; //one level up

要么

window.location.href = '/path'; //relative to domain

29
为什么你应该使用window.location.replace stackoverflow.com/questions/503093/...
吉迪恩

52
当您要模拟链接时,应使用window.location.href。仅window.location.replace当您要模拟http重定向(因此不生成历史项)时才应使用。
本治十六世

24
顺便说一句,document.location原本打算作为只读属性。使用起来更安全window.location。看到这个问题
本治十六世

6
我发现使用window.location.href = '../'重定向到站点的根目录,而不是按预期的那样“一级升级”。当前页面为“ www.example.com/customers/list”时,我需要使用'./'。我猜这是因为“列表”不被视为目录级别。
马库斯·坎宁安

2
@MarcusCunningham,在您的示例中,目录为/ customers /-因此“一级升级”为www.example.com/。现在,如果您的示例网址是www.example.com/customers/list/-它将重定向到www.example.com/customers/
Ubeogesh

12

如果使用,location.hostname您将获得您的domain.com部分。然后location.pathname会给你/ path / folder。我将location.pathname用/ 分割,然后重新组合URL。但是除非需要查询字符串,否则您只需重定向到..上面的目录即可。


当我转到location.path时,我的浏览器发了声,似乎只能识别location.pathname。提示?
Konrad Viltersten '16

location.path错误,应为location.hostname。我已在帖子中添加了修改内容以解决此问题。
ygrichman



5

<a href="..">no JS needed</a>

.. 表示父目录。


14
这需要单击或其他一些用户启动的导航。
递归

2

我正在尝试使用JavaScript将当前网站重定向到同一页上的其他部分。以下代码对我有用:

location.href='/otherSection'

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.