检查链接是内部链接还是外部链接

the*_*mhz 6 .net c#

您好我在C#中构建类似于webspider的东西.在我的研究中,我遇到了一个问题,我需要阻止链接是内部还是外部,入站或出站.所以我需要创建一个功能来为我做这项工作.所以我提出了以下功能,但我不确定它是否是最好的algorythm以完成该任务.所以我希望你对这个问题有所了解.

我认为在链接前没有http://或https://的链接是内部的,如果我有一个域http://www.blahblah.com那么像test这样的链接应该仍然是内部的,尽管事实是它在前面有http://,但像http://www.somethingelse.com/?var1=http://www.blahblah.com/test这样的链接是外部的,我只检查第一个字母.

private Boolean checklinkifinternal(String link)
        {
            Boolean isinternal = false;

            if (link.IndexOf("http://") == 0 || link.IndexOf("https://") == 0)
            {
                //Then probably external
                if (link.IndexOf("http://" + UrlName) == 0 || link.IndexOf("https://" + UrlName) == 0 || link.IndexOf("http://www." + UrlName) == 0 || link.IndexOf("https://www." + UrlName) == 0)
                {
                    isinternal = true;
                }
            }
            else
            {
                isinternal = true;
            }

            return isinternal;
        }
Run Code Online (Sandbox Code Playgroud)

小智 6

Uri.Compare(new Uri("google.de"), new Uri("Google.de"), UriComponents.Host, UriFormat.SafeUnescaped, StringComparison.CurrentCulture);
Run Code Online (Sandbox Code Playgroud)

这就是我从头顶说的:)