如果我有网址A说http://www.example.com/
而另一个说http://www.example.com
。什么是最安全的方法来确定两者是否相同,而不查询网页并做差异?
实施例
http://www.example.com/
VS http://www.example.com
(上文提到)http://www.example.com/aa/../
VS http://www.example.com
编辑: 说明:根据RFC 1738标准,只想知道URL是否相同。
答案 0 :(得分:13)
在.Net中,您可以使用System.Uri类。
让u1 =新的Uri(“http://www.google.com/”);;
val u1:Uri = http://www.google.com/
让u2 =新的Uri(“http://www.google.com”);;
val u2:Uri = http://www.google.com/
u1.Equals(U2);;
val it:bool = true
要进行更细粒度的比较,您可以使用Uri.Compare方法。还有一些静态方法可以处理Uri字符串中各种形式的字符转义和编码,这无疑在彻底处理主题时非常有用。
答案 1 :(得分:1)
如果没有请求网址,你几乎无能为力。但您可以定义几种启发式方法:
.htm
和.html
相同的/base/
和/base/index.html
相同url.com
和www.url.com
相同。这完全取决于“相同”的URL究竟是什么意思。
答案 2 :(得分:1)
为了那些不了解F#的人的利益,这是一个快速而肮脏但完整的C#控制台应用程序,它演示了如何使用Uri类来判断两个URL是否相同。运行此代码时,您应该看到两行:“true”,后跟“false”:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(IsSameUrl("http://stackoverflow.com/", "http://stackoverflow.com").ToString());
Console.WriteLine(IsSameUrl("http://stackoverflow.com/", "http://codinghorror.com").ToString());
Console.ReadKey();
}
static bool IsSameUrl(string url1, string url2)
{
Uri u1 = new Uri(url1);
Uri u2 = new Uri(url2);
return u1.Equals(u2);
}
}
}
答案 3 :(得分:0)
向Yuval A答案添加的内容很少: