重定向到 JavaScript 中的相对 URL

Posted

技术标签:

【中文标题】重定向到 JavaScript 中的相对 URL【英文标题】:Redirecting to a relative URL in JavaScript 【发布时间】:2010-12-11 22:07:19 【问题描述】:

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

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

网址如下所示:

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

重定向只影响这个:

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

但是想拥有这个:

example.com/path/

我该怎么做?

【问题讨论】:

【参考方案1】:

你可以做一个相对重定向:

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

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

【讨论】:

看看为什么你应该使用window.location.replace***.com/questions/503093/… 当你想模拟一个链接时,你应该使用window.location.href。当你想模拟一个 http 重定向(因此不生成历史项目)时,你应该只使用window.location.replace 顺便说一下,document.location 是作为只读属性的。使用window.location 更安全。见this question。 我发现使用window.location.href = '../' 重定向到站点的根目录,而不是像预期的那样“向上一级”。当当前页面是“www.example.com/customers/list”时,我需要使用'./'。我猜这是因为“列表”不被视为目录级别。 @MarcusCunningham,在您的示例中,目录是 /customers/ - 所以“上一级”是 www.example.com/。现在,如果您的示例 URL 是 www.example.com/customers/list/ - 它会将您重定向到 www.example.com/customers/【参考方案2】:

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

【讨论】:

当我转到 location.path 时,我的浏览器会狂吠,它似乎只能识别 location.pathname。提示? location.path 不正确,应该是 location.hostname。我已经在帖子中添加了一个编辑来解决这个问题。【参考方案3】:

https://developer.mozilla.org/en-US/docs/Web/API/Location/assign

window.location.assign("../"); // 上一级 window.location.assign("/path"); // 相对于域

【讨论】:

【参考方案4】:

重定向到../

【讨论】:

如果您的应用托管在 sub-uri 中并且应用不知道 sub-uri 路径。如果你在你的应用程序根目录并且你做了 ../ 应用程序将不知道如何回到它的根目录。例如,同一应用托管在example.com/myapp 和other.example.com/app2【参考方案5】:

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

.. 表示父目录。

【讨论】:

这需要点击或其他一些用户启动的导航。【参考方案6】:

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

location.href='/otherSection'

【讨论】:

【参考方案7】:

试试下面的js代码

location = '..'

【讨论】:

以上是关于重定向到 JavaScript 中的相对 URL的主要内容,如果未能解决你的问题,请参考以下文章

重定向到外部 Javascript 函数中的 URL 不起作用

将重定向发送到 JSP 中的相对路径?

IIS HTTP 到 HTTPS 的相对重定向

为啥我的 .htaccess 文件重定向到完整的服务器路径而不是相对路径?

302 重定向到相对 URL 是有效的还是无效的?

302 重定向到相对 URL 是有效的还是无效的?