繁体   English   中英

添加http:// www。 到此正则表达式并禁止子域

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM