0

我一直在使用这个正则表达式来验证域名,它做得很好。我需要添加一个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.,但以错误结束。我不知道如何做子域拒绝部分。

   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";}
4

2 回答 2

1

在 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]

或使用这个正则表达式

/^(http?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/

针对特定的

   /^http?://([a-z0-9-]+\.)*blah\.com(/.*)?$/
于 2012-11-18T12:23:33.067 回答
0

这应该适合你:

<?php
    function isurl($this_url) {
        return (filter_var($this_url, FILTER_VALIDATE_URL) && preg_match("#^https?://www\.#", $this_url));
    }
?>

使用filter_var和一个简单的正则表达式。

于 2012-11-18T12:40:07.830 回答