--- b/horizon/manifests/wsgi/apache.pp
+++ a/horizon/manifests/wsgi/apache.pp
@@ -172,3 +172,3 @@
     aliases                     => [{
-      alias => "${$::horizon::params::root_url}/static",
+      alias => '/static',
       path  => '/usr/share/openstack-dashboard/static',
--- b/horizon/spec/classes/horizon_init_spec.rb
+++ a/horizon/spec/classes/horizon_init_spec.rb
@@ -99,3 +99,3 @@
           :file_upload_temp_dir    => '/var/spool/horizon',
-          :secure_cookies          => true,
+          :secure_cookies          => true
         })
@@ -329,8 +329,2 @@
     it_behaves_like 'horizon'
-
-    it 'sets WEBROOT in local_settings.py' do
-      verify_concat_fragment_contents(catalogue, 'local_settings.py', [
-        "WEBROOT = '/dashboard/'",
-      ])
-    end
   end
@@ -352,8 +346,2 @@
     it_behaves_like 'horizon'
-
-    it 'sets WEBROOT in local_settings.py' do
-      verify_concat_fragment_contents(catalogue, 'local_settings.py', [
-        "WEBROOT = '/horizon/'",
-      ])
-    end
   end
--- b/horizon/spec/classes/horizon_wsgi_apache_spec.rb
+++ a/horizon/spec/classes/horizon_wsgi_apache_spec.rb
@@ -205,7 +205,2 @@
     }
-    it 'configures webroot alias' do
-      is_expected.to contain_apache__vhost('horizon_vhost').with(
-        'aliases' => [['alias', '/dashboard/static'], ['path', '/usr/share/openstack-dashboard/static']],
-      )
-    end
   end
@@ -233,7 +228,2 @@
     it_behaves_like 'apache for horizon'
-    it 'configures webroot alias' do
-      is_expected.to contain_apache__vhost('horizon_vhost').with(
-        'aliases' => [['alias', '/horizon/static'], ['path', '/usr/share/openstack-dashboard/static']],
-      )
-    end
   end
--- b/horizon/templates/local_settings.py.erb
+++ a/horizon/templates/local_settings.py.erb
@@ -9,6 +9,2 @@
 
-# WEBROOT is the location relative to Webserver root
-# should end with a slash.
-WEBROOT = '<%= scope.lookupvar("horizon::params::root_url") %>/'
-
 # Required for Django 1.5.
--- a/manifests/wsgi/apache.pp
+++ b/manifests/wsgi/apache.pp
@@ -172,3 +172,3 @@
     aliases                     => [{
-      alias => '/static',
+      alias => "${$::horizon::params::root_url}/static",
       path => '/usr/share/openstack-dashboard/static',
--- a/spec/classes/horizon_init_spec.rb
+++ b/spec/classes/horizon_init_spec.rb
@@ -301,2 +301,8 @@
     it_behaves_like 'horizon'
+
+    it 'sets WEBROOT in local_settings.py' do
+      verify_concat_fragment_contents(catalogue, 'local_settings.py', [
+        "WEBROOT = '/dashboard/'",
+      ])
+    end
   end
@@ -318,2 +324,8 @@
     it_behaves_like 'horizon'
+
+    it 'sets WEBROOT in local_settings.py' do
+      verify_concat_fragment_contents(catalogue, 'local_settings.py', [
+        "WEBROOT = '/horizon/'",
+      ])
+    end
   end
--- a/spec/classes/horizon_wsgi_apache_spec.rb
+++ b/spec/classes/horizon_wsgi_apache_spec.rb
@@ -42,3 +42,3 @@
           'priority'             => '15',
-          'serveraliases'        => '*',
+          'serveraliases'        => ['*'],
           'docroot'              => '/var/www/',
@@ -75,3 +75,3 @@
           'priority'             => params[:priority],
-          'serveraliases'        => '*',
+          'serveraliases'        => ['*'],
           'docroot'              => '/var/www/',
@@ -109,3 +109,3 @@
           'priority'               => '15',
-          'serveraliases'          => '*',
+          'serveraliases'          => ['*'],
           'docroot'                => '/var/www/',
@@ -128,3 +128,3 @@
           'priority'             => '15',
-          'serveraliases'        => '*',
+          'serveraliases'        => ['*'],
           'docroot'              => '/var/www/',
@@ -205,2 +205,13 @@
     }
+    it 'configures webroot alias' do
+      if (Gem::Version.new(Puppet.version) >= Gem::Version.new('4.0'))
+        is_expected.to contain_apache__vhost('horizon_vhost').with(
+          'aliases' => [{'alias' => '/dashboard/static', 'path' => '/usr/share/openstack-dashboard/static'}],
+        )
+      else
+        is_expected.to contain_apache__vhost('horizon_vhost').with(
+          'aliases' => [['alias', '/dashboard/static'], ['path', '/usr/share/openstack-dashboard/static']],
+        )
+      end
+    end
   end
@@ -228,2 +239,13 @@
     it_behaves_like 'apache for horizon'
+    it 'configures webroot alias' do
+      if (Gem::Version.new(Puppet.version) >= Gem::Version.new('4.0'))
+        is_expected.to contain_apache__vhost('horizon_vhost').with(
+          'aliases' => [{'alias' => '/horizon/static', 'path' => '/usr/share/openstack-dashboard/static'}],
+        )
+      else
+        is_expected.to contain_apache__vhost('horizon_vhost').with(
+          'aliases' => [['alias', '/horizon/static'], ['path', '/usr/share/openstack-dashboard/static']],
+        )
+      end
+    end
   end
--- a/templates/local_settings.py.erb
+++ b/templates/local_settings.py.erb
@@ -9,2 +9,6 @@
 
+# WEBROOT is the location relative to Webserver root
+# should end with a slash.
+WEBROOT = '<%= scope.lookupvar("horizon::params::root_url") %>/'
+
 # Required for Django 1.5.
