diff --git a/core/Tracker/VisitExcluded.php b/core/Tracker/VisitExcluded.php index ef0cd00b6dc8aca4dedfe6a65637a02205b29f96..0bc6fa2fbb599714a789bcbde93ae3072114f86b 100644 --- a/core/Tracker/VisitExcluded.php +++ b/core/Tracker/VisitExcluded.php @@ -293,7 +293,7 @@ class VisitExcluded if (!empty($site['exclude_unknown_urls']) && !empty($site['hosts'])) { $trackingHost = parse_url($this->request->getParam('url'), PHP_URL_HOST); foreach ($site['hosts'] as $siteHost) { - if ($trackingHost == $siteHost) { + if ($trackingHost == $siteHost || (substr($trackingHost, -strlen($siteHost) - 1) === ('.' . $siteHost))) { return false; } } diff --git a/tests/PHPUnit/Integration/Tracker/VisitTest.php b/tests/PHPUnit/Integration/Tracker/VisitTest.php index 107c16c0835e731479845a8a855a260ff6d87f14..e870fa6c51c01532d3b4200dea3ec87b0761ec4d 100644 --- a/tests/PHPUnit/Integration/Tracker/VisitTest.php +++ b/tests/PHPUnit/Integration/Tracker/VisitTest.php @@ -108,8 +108,6 @@ class VisitTest extends IntegrationTestCase 'http://test.com/uri' => true, 'http://test.com/?query' => true, 'http://xtest.com' => false, - 'http://x.test.com' => false, - 'http://x.com/test.com' => false, )), array(array('http://test.com', 'http://localhost'), true, array( 'http://test.com' => true, @@ -119,6 +117,16 @@ class VisitTest extends IntegrationTestCase array(array('http://test.com'), false, array( 'http://x.com' => true, )), + array(array('http://test.com', 'http://sub.test2.com'), true, array( + 'http://sub.test.com' => true, + 'http://sub.sub.test.com' => true, + 'http://subtest.com' => false, + 'http://test.com.org' => false, + 'http://sub.test2.com' => true, + 'http://x.sub.test2.com' => true, + 'http://xsub.test2.com' => false, + 'http://sub.test2.com.org' => false, + )), ); }