diff --git a/apache/vhosts/cleanup.sls b/apache/vhosts/cleanup.sls
new file mode 100644
index 0000000000000000000000000000000000000000..83b7fa8ebca511f7c6be6bde5fe26efe292516d5
--- /dev/null
+++ b/apache/vhosts/cleanup.sls
@@ -0,0 +1,37 @@
+{% from "apache/map.jinja" import apache with context %}
+
+include:
+  - apache
+
+{% if grains.os_family == 'Debian' %}
+
+{% set dirpath = '/etc/apache2/sites-enabled' %}
+
+{# Add . and .. to make it easier to not clean those #}
+{% set valid_sites = ['.', '..', ] %}
+
+{# Take sites from apache.vhosts.standard #}
+{% for id, site in salt['pillar.get']('apache:sites', {}).items() %}
+{%   do valid_sites.append('{}{}'.format(id, apache.confext)) %}
+{% endfor %}
+
+{# Take sites from apache.register_site #}
+{% for id, site in salt['pillar.get']('apache:register-site', {}) %}
+{%   do valid_sites.append('{}{}'.format(site.name, apache.confext)) %}
+{% endfor %}
+
+
+{% for filename in salt['file.readdir']('/etc/apache2/sites-enabled/') %}
+{%   if filename not in valid_sites %}
+
+a2dissite {{ filename }}:
+  cmd.run:
+    - onlyif: "test -L {{ dirpath}}/{{ filename }} || test -f {{ dirpath}}/{{ filename }}"
+    - watch_in:
+      - module: apache-reload
+
+{%   endif %}
+{% endfor %}
+
+
+{% endif %}{# Debian #}