diff --git a/modules/openstack_project/manifests/static.pp b/modules/openstack_project/manifests/static.pp
index fd6fd30045..bd06622150 100644
--- a/modules/openstack_project/manifests/static.pp
+++ b/modules/openstack_project/manifests/static.pp
@@ -49,6 +49,10 @@ class openstack_project::static (
     }
   }
 
+  if ! defined(Httpd::Mod['alias']) {
+    httpd::mod { 'alias': ensure => present }
+  }
+
   if ! defined(File['/srv/static']) {
     file { '/srv/static':
       ensure => directory,
@@ -252,22 +256,39 @@ class openstack_project::static (
   }
 
   ###########################################################
-  # Governance
+  # Governance & Election
+
+  # Extra aliases and directories needed for vhost template:
+  $aliases = {
+    '/election/' => '/srv/static/election/'
+  }
+  $directories = [
+    '/srv/static/election',
+    '/srv/static/governance'
+  ]
 
   ::httpd::vhost { 'governance.openstack.org':
-    port       => 443, # Is required despite not being used.
-    docroot    => '/srv/static/governance',
-    priority   => '50',
-    ssl        => true,
-    template   => 'openstack_project/static-http-and-https.vhost.erb',
-    vhost_name => 'governance.openstack.org',
-    require    => [
+    port        => 443, # Is required despite not being used.
+    docroot     => '/srv/static/governance',
+    priority    => '50',
+    ssl         => true,
+    template    => 'openstack_project/static-http-and-https.vhost.erb',
+    vhost_name  => 'governance.openstack.org',
+    require     => [
+      File['/srv/static/election'],
       File['/srv/static/governance'],
       File[$cert_file],
       File[$key_file],
     ],
   }
 
+  file { '/srv/static/election':
+    ensure  => directory,
+    owner   => 'jenkins',
+    group   => 'jenkins',
+    require => User['jenkins'],
+  }
+
   file { '/srv/static/governance':
     ensure  => directory,
     owner   => 'jenkins',
diff --git a/modules/openstack_project/templates/static-http-and-https.vhost.erb b/modules/openstack_project/templates/static-http-and-https.vhost.erb
index 83a7403cb1..bd57e85608 100644
--- a/modules/openstack_project/templates/static-http-and-https.vhost.erb
+++ b/modules/openstack_project/templates/static-http-and-https.vhost.erb
@@ -14,6 +14,24 @@
   RewriteRule ^/(.*)$ http://<%= @vhost_name %>/$1 [L,R=301]
 <% end -%>
   DocumentRoot <%= @docroot %>
+
+<% if scope.lookupvar('openstack_project::static::aliases').is_a? Hash -%>
+  # Alias other folders
+  <% scope.lookupvar('openstack_project::static::aliases').each do |a, d| -%>
+    Alias "<%= a %>" "<%= d %>"
+  <% end -%>
+<% end -%>
+<% if scope.lookupvar('openstack_project::static::directories').is_a? Array -%>
+  <% scope.lookupvar('openstack_project::static::directories').each do |dirname| -%>
+  <Directory <%= dirname %>>
+    Options Indexes FollowSymLinks MultiViews
+    AllowOverride None
+    Order allow,deny
+    allow from all
+    Satisfy Any
+  </Directory>
+  <% end -%>
+<% else -%>
   <Directory <%= @docroot %>>
     Options Indexes FollowSymLinks MultiViews
     AllowOverride None
@@ -21,6 +39,7 @@
     allow from all
     Satisfy Any
   </Directory>
+<% end -%>
   LogLevel warn
   ErrorLog /var/log/apache2/<%= @vhost_name %>_error.log
   CustomLog /var/log/apache2/<%= @vhost_name %>_access.log combined