我正在尝试从c#代码中检查给定的_Blank是否来自我的域,以便为外部链接添加"nofollow“和"target url”属性。
当我谈到外部链接时,我指的是我的域之外的任何链接。
默认情况下,它没有该属性。我尝试了很多东西,基本上这是我需要修复的部分:
public void PrepareLink(HtmlTag tag)
{
string url = tag.attributes["href"];
if (PrepareLink != null)
{
if (it is from an external site???)
{
tag.attributes["rel"] = "nofollow";
tag.attributes["target"] = "_blank";
}
}
编辑:我尝试过的事情:
string dominioLink = new Uri(url).Host.ToLower();
if (!dominioLink.Contains(myDomainURL))
{
tag.attributes["rel"] = "nofollow";
tag.attributes["target"] = "_blank";
}
它有一个问题,那就是不考虑子域
也就是说,如果创建的链接是http://www.mydomain.com.anotherfakedomain.com,它将返回true并正常工作。
我查看了每个Uri属性,但似乎没有包含基域。
我目前使用的是.NET Core2.0。
谢谢!如果您需要任何其他数据,请让我知道。
发布于 2019-07-17 10:42:12
您可以使用Uri.Host属性从URL字符串中获取域,然后将其与您自己的域进行比较。我建议使用不区分大小写的匹配。
var url = tag.attributes["href"];
var uri = new Uri(url);
var match = uri.Host.Equals(myDomain, StringComparison.InvariantCultureIgnoreCase)
https://stackoverflow.com/questions/57067271
复制相似问题