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/

どうすればできますか?

回答:


684

相対リダイレクトを行うことができます:

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

または

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


52
リンクをシミュレートする場合は、を使用する必要がありますwindow.location.hrefwindow.location.replacehttpリダイレクトをシミュレートする場合にのみ使用する必要があります(したがって、履歴アイテムは生成されません)。
Benji XVI、

24
ところで、document.locationは読み取り専用プロパティとして意図されていました。使用する方が安全window.locationです。この質問を参照してください。
Benji XVI

6
window.location.href = '../'期待どおりに「1レベル上」ではなく、サイトのルートにリダイレクトして使用していることがわかりました。現在のページが「www.example.com/customers/list」の場合、を使用する必要がありました'./'。これは、「リスト」がディレクトリレベルと見なされないためだと思います。
マーカスカニンガム

2
@MarcusCunningham、あなたの例では、ディレクトリは/ customers /なので、「1つ上のレベル」はwww.example.com/です。ここで、例のURLがwww.example.com/customers/list/の場合、www.example.com
customers /に

12

使用するlocation.hostname場合は、domain.comパーツを取得します。次に、location.pathname/ path / folderが表示されます。location.pathname/で分割し、URLを再構成します。ただし、クエリ文字列が必要でない限り..、上のディレクトリに移動するようにリダイレクトできます。


location.pathにアクセスすると、ブラウザが鳴り、location.pathnameしか認識されないようです。ヒント?
Konrad Viltersten

location.pathが正しくありません。location.hostnameである必要があります。これを修正するために、投稿に編集を加えました。
ygrichman 2017年



5

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

.. 親ディレクトリを意味します。


14
これには、クリックまたはその他のユーザーが開始するナビゲーションが必要です。
2012

2

JavaScriptを使用して、現在のWebサイトを同じページの他のセクションにリダイレクトしようとしています。このフォローコードは私にとってはうまくいきます:

location.href='/otherSection'

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.