2011-10-13 11 views
5

さまざまなURLのユーザーを特定のURLにリダイレクトしたいと考えています。私は交換の様々な味を試してみたし、私が望む振る舞いを得ることができない。このコードは、私がホスト名を提供している以外は機能します。私はwindows.location.hostnameから既存のホスト名を使い、新しいパス名を提供したいと思います。時々、URLのサイズとスラッシュ( '/')が異なります。javascript window.locationプロパティとリダイレクトのパス名を切り替える方法

window.location = 'http://localhost:36065/NewPath'; 

これらのURLはどのように変更しますか?

http://somesite.com/xxx/yyy/zzz to http://somesite.com/NewPath 
http://somesite.com/xxx/yyy to http://somesite.com/NewPath 
http://somesite.com/xxx to http://somesite.com/NewPath 

あなたはポイントを得ると思います。パスはパスによって異なる可能性があります。.comを基本的に 'NewPath'の後ろに置き換えたい

できるだけクリーンな正規表現の解決が必要ですが、私はその部門の新人です。任意のヒントやトリックありがとう。

答えて

15
location.pathname = '/newpath.html' 
+0

+1、素晴らしい擬似性、なぜ私はそれを考えなかったのですか? –

+1

また、これはURLにハッシュを保持しますが、それはおそらく問題ではありません。 –

+0

いいえポイント@ Xeon06、それも任意のクエリ文字を保持します –

1

あなたはいつもあなたが必要な部分を再作成し、そこに新しいパーツを追加するthe various location propertiesを使用することができます。

+0

を非標準(80,443)これは動作しません –

+0

確かに。私はそれを追加することができますが、@ JasonHarwigが最良の解決策を持っていると思います。 –

0

ただ、ハードな方法を示すために:ポートがある場合

// Find everything up to the first slash and save it in a backreference 
regexp = /(\w+:\/\/[^\/]+)\/.*/; 

// Replace the href with the backreference and the new uri 
newurl = windows.location.href.replace(regexp, "$1/dir/foo/bar/newpage.html"); 
関連する問題