diff --git a/kernel/classes/ezsiteaccess.php b/kernel/classes/ezsiteaccess.php
index 400b77b..3ede814 100644
--- a/kernel/classes/ezsiteaccess.php
+++ b/kernel/classes/ezsiteaccess.php
@@ -272,13 +272,41 @@ class eZSiteAccess
                         if ( $ini->hasVariable( 'SiteAccessSettings', 'HostMatchMapItems' ) )
                         {
                             $matchMapItems = $ini->variableArray( 'SiteAccessSettings', 'HostMatchMapItems' );
+                            $matchMethodDefault = $ini->variableArray( 'SiteAccessSettings', 'HostMatchMethodDefault' );
+
                             foreach ( $matchMapItems as $matchMapItem )
                             {
-                                $matchMapHost = $matchMapItem[0];
-                                $matchMapAccess = $matchMapItem[1];
-                                if ( $matchMapHost == $host )
+                                $matchHost = $matchMapItem[0];
+                                $matchAccess = $matchMapItem[1];
+
+                                switch( isset( $matchMapItem[2] ) ? $matchMapItem[2] : $matchMethodDefault )
                                 {
-                                    $access['name'] = $matchMapAccess;
+                                    case 'strict':
+                                    {
+                                        $hasHostMatch = ( $matchHost === $host );
+                                    } break;
+                                    case 'start':
+                                    {
+                                        $hasHostMatch = ( strpos($host, $matchHost) === 0 );
+                                    } break;
+                                    case 'end':
+                                    {
+                                        $hasHostMatch = ( strstr($host, $matchHost) === $matchHost );
+                                    } break;
+                                    case 'part':
+                                    {
+                                        $hasHostMatch = ( strpos($host, $matchHost) !== false );
+                                    } break;
+                                    default:
+                                    {
+                                        $hasHostMatch = false;
+                                        eZDebug::writeError( "Unknown host match: $matchMapItem[2]", "access" );
+                                    } break;
+                                }
+
+                                if ( $hasHostMatch )
+                                {
+                                    $access['name'] = $matchAccess;
                                     $access['type'] = $type;
                                     return $access;
                                 }
diff --git a/settings/site.ini b/settings/site.ini
index f593a5d..41a58bc 100644
--- a/settings/site.ini
+++ b/settings/site.ini
@@ -640,8 +640,13 @@ HostMatchRegexpItem=1
 HostMatchSubtextPre=
 HostMatchSubtextPost=bf.ez.no##!
 #!HostMatchSubtextPost=.example.com
-# Add array entries here if you chose HostMatchType=map
-# Each entry consists of the hostname;accessname
+
+# Add array entries here if you use MatchOrder host with HostMatchType=map
+# Each entry consists of the hostname;accessname[;start|end|part|strict]
+# Last optional paramter controls host matching method, 'strict' by default
+# Change HostUriMatchMethodDefault to one of these options to chenge default value
+HostMatchMethodDefault=strict
+
 #HostMatchMapItems[]=example.com;user
 #HostMatchMapItems[]=admin.example.com;admin
 HostMatchMapItems[]=nvh.amos.dvh2.ez.no;admin##!
