2012-01-19 29 views
1

javascriptで2つのURLが同じであるかどうかを確認する方法はありますか?JavaScriptが重複するURLを避ける

example.com/dogs/
example.com/dogs

またはこれらの両方:

www.example.com
私は、データベース内のこれらの両方を保存したいとは思わないでしょう例えば

example.com

またはこれらの両方:URLでGETデータに関する

http://example.com
https://example.com

...と何?私のデータベースは本当に乱雑になる可能性があります。

すべてのURLを標準形式に変換して、重複を確認する方がずっと簡単になる方法はありますか?

ありがとうございました!

+0

本当に同じものはありません。それらはあなたが結合したい唯一の違いはありますか? – Phrogz

+0

'http:// example.com'のコンテンツは' https:// example.com'と同じ内容であるとは限りません。あなたの他の例にも同じです。心に留めておきます。 –

+0

JSを使用してデータベースにアクセスする予定ですか? – cambraca

答えて

0

Googleでこの問題を解決しましたlink rel="canonical" - この処理はcanonicalizationと呼ばれています。

もちろん、あなたが説明しているようにregexpでURLを単純化することはできますが、 "example.com"と "www.example.com"は異なるサイトになる可能性があります。

0

サイトのベースドメインを保存したいだけなら、これは私がやることです。

var url = "http://www.xyzsite.com/mySite/?param=1"; // This is the url you want to process. 

var filter = [ 
    "http://", 
    "https://", 
    "www.", 
]; 

// Loops through array and removes the protocol and www. prefixes if present 
for (var i in filter) { 
    url = url.replace(filter[i], ""); 
} 

// Returns everything before the first/in the URL 
var cleanUrl = url.split("/")[0]; // cleanUrl should equal "xyzsite.com" now 

おそらく複数回も実行することができるように、関数内にラップしています。

+0

サブフォルダとサブドメインがうまく機能します。あなたのメソッドは、 'example.com/dogs'と' example.com/cats'の両方を 'example.com'に変換します。それは私が探しているものではありません。 –

+0

これはサブドメインでは機能しますが、サブフォルダでは機能しません。サブフォルダをサポートしたい場合は、.split( "/")[0]部分を使わないでください。 – pseudosavant

関連する問題