2016-04-22 4 views
2

で特定のポートのリダイレクトが含まれている場合、私は、このようなhttp://forum.domain.com:4567 としてhttps://forum.domain.comへのURLをリダイレクトする必要があります。訪問者がhttp://forum.domain.com:4567URLのJavaScript

に行くときにのみリダイレクトする必要がありますので、コードが、広いサイトを実行されます私はこれを試してみましたが、それはループ:

<script> 
    if (window.location.href = "http://forum.domain.com:4567") { 
     window.location = "https://forum.domain.com"; 
    } 
</script> 

答えて

2

window.locationは、それがport性質を持っていなければならないという意味、URLタイプに似てLocationタイプです。

あなたのような何かを行うことができます。

if (window.location.port === "4567"){ 
    window.location = "https://forum.domain.com"; 
} 

か、もう少し拡張したい場合:勤務

if (window.location.port === "4567"){ 
    window.location = window.location.href.replace(':' + window.location.port, ""); 
} 
+0

を!ありがとう:) – Verpz

+0

これはやや間違っています。 'window.location'は実験的な' URL'型を返しません。これは 'Location'型を返します。これは異なっています。これはリンクされたドキュメントに明記されています。そして、場所の['port'プロパティ](https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/port)は単なる文字列です(あなたの例で使用されています)。あなたがリンクしている 'Port'オブジェクトです。 –

+0

ああ、説明のおかげで@MatthewHerbst – Quill

1

あなたは比較のために==を使用する必要があります。

if (window.location.href == "http://forum.domain.com:4567") { 
    window.location = "https://forum.domain.com"; 
} 

単一=が割り当てに使用されます。あなたが持っているコードは、割り当てが機能してから失敗しないし、window.location.hrefは真実の値です。

2

あなたはifです。チェックは値を設定しているため、比較が行われず、ループが発生します。

変更:

if (window.location.href == "http://forum.domain.com:4567") {