【问题标题】:Redirecting to a relative URL in JavaScript重定向到 JavaScript 中的相对 URL
【发布时间】: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/

我该怎么做?

【问题讨论】:

    标签: javascript url redirect


    【解决方案1】:

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

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

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

    【讨论】:

    • 看看为什么你应该使用window.location.replacestackoverflow.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/myappother.example.com/app2
      【解决方案5】:

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

      .. 表示父目录。

      【讨论】:

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

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

      location.href='/otherSection'
      

      【讨论】:

        【解决方案7】:

        试试下面的js代码

        location = '..'

        【讨论】:

          猜你喜欢
          • 2021-10-11
          • 1970-01-01
          • 2011-12-07
          • 2016-12-12
          • 2013-11-03
          • 2016-06-23
          • 2020-06-22
          • 1970-01-01
          相关资源
          最近更新 更多