[英]Adding a http://www. to this regex and disallowing subdomains
我一直在使用此正则表达式来验证域名,并且确实很好。 我需要添加一个http://www.
或https://www.
对此。 恐怕我会搞砸了。 它当前不使用http://www.
另外,有什么办法可以弯曲它,使其拒绝子域?
因此,总而言之:
http://www.domain.com -> valid
www.domain.com - > Invalid (Should have the http://www. part)
http://sub.domain.com - > Invalid (Subdomain)
http://www.sub.domain.com -> Invlaid (Subdomain)
我尝试使用http://www.
做事http://www.
部分,但以错误结束。 我不知道如何做子域拒绝部分。
function isurl($this_url)
{
if(preg_match("/^([a-z0-9]([-a-z0-9]*[a-z0-9])?\.)+((a[cdefgilmnoqrstuwxz]|aero|arpa)|(b[abdefghijmnorstvwyz]|biz)|(c[acdfghiklmnorsuvxyz]|cat|com|coop)|d[ejkmoz]|(e[ceghrstu]|edu)|f[ijkmor]|(g[abdefghilmnpqrstuwy]|gov)|h[kmnrtu]|(i[delmnoqrst]|info|int)|(j[emop]|jobs)|k[eghimnprwyz]|l[abcikrstuvy]|(m[acdghklmnopqrstuvwxyz]|mil|mobi|museum)|(n[acefgilopruz]|name|net)|(om|org)|(p[aefghklmnrstwy]|pro)|qa|r[eouw]|s[abcdeghijklmnortvyz]|(t[cdfghjklmnoprtvwz]|travel)|u[agkmsyz]|v[aceginu]|w[fs]|y[etu]|z[amw])$/i", $this_url))
{
return true;
}
}
$this_url = "www.domain.com";
if (isurl($this_url))
{echo "Success";}
else
{echo "Fail";}
在htaccess中尝试一下
RewriteCond %{HTTP_HOST} !^(www\.)?mysite\.tld$ [NC]
RewriteRule ^ - [F,L]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
或使用此regx
/^(http?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/
对于垂直
/^http?://([a-z0-9-]+\.)*blah\.com(/.*)?$/
这应该为您工作:
<?php
function isurl($this_url) {
return (filter_var($this_url, FILTER_VALIDATE_URL) && preg_match("#^https?://www\.#", $this_url));
}
?>
使用filter_var
和一个简单的正则表达式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.