diff --git a/.cspell-project-words.txt b/.cspell-project-words.txt
index 17ac65c8cb8f37f84bd8e46cccd417376b7eb85b..e1acafe870e1b3fad51fcde9eabfc49405fc28f4 100644
--- a/.cspell-project-words.txt
+++ b/.cspell-project-words.txt
@@ -78,9 +78,11 @@ projectrootfiles
 projectrootinvoiceninja
 projectrootmailpit
 projectrootredis
+publicdomain
 qtbase
 recipientallowlist
 redirectregex
+redirectregexpublic
 relatedprojectdomains
 remoterepo
 responseheader
diff --git a/templates/docker-compose.yml.twig b/templates/docker-compose.yml.twig
index d5d3b8b11a7883e5ab5fe7296842130c0a26bf09..13cbff439738ea329dc6422234d45a7bc4a479e7 100644
--- a/templates/docker-compose.yml.twig
+++ b/templates/docker-compose.yml.twig
@@ -178,15 +178,19 @@ services:
 {% if basicauth.enable %}
       traefik.http.middlewares.{{ webserver.type }}-{{ projectname }}-auth.basicauth.users: {{ basicauth.code }}
 {% endif %}
-      traefik.http.routers.{{ webserver.type }}-{{ projectname }}.rule: Host(`{{ projectdomain }}`){% for domain in extradomains|default([]) %} || Host(`{{ domain }}`){% endfor %}
+      traefik.http.routers.{{ webserver.type }}-{{ projectname }}.rule: {% if publicdomain is defined %}Host(`{{ publicdomain }}`) || {% endif %}Host(`{{ projectdomain }}`){% for domain in extradomains|default([]) %} || Host(`{{ domain }}`){% endfor %}
 
 {% if drupal.live|default(0) or traefik.usessl %}
       traefik.http.routers.{{ webserver.type }}-{{ projectname }}.tls: 'true'
       traefik.http.routers.{{ webserver.type }}-{{ projectname }}.tls.certresolver: lakedrops
 {% endif %}
+{% if publicdomain is defined %}
+      traefik.http.middlewares.{{ webserver.type }}-{{ projectname }}-redirectregexpublic.redirectRegex.regex: "^https://{{ projectdomain }}/(.*)"
+      traefik.http.middlewares.{{ webserver.type }}-{{ projectname }}-redirectregexpublic.redirectRegex.replacement: "https://{{ publicdomain }}/$${1}"
+{% endif %}
 {% for domain in extradomains|default([]) %}
       traefik.http.middlewares.{{ webserver.type }}-{{ projectname }}-redirectregex{{ loop.index }}.redirectRegex.regex: "^https://{{ domain }}/(.*)"
-      traefik.http.middlewares.{{ webserver.type }}-{{ projectname }}-redirectregex{{ loop.index }}.redirectRegex.replacement: "https://{{ projectdomain }}/$${1}"
+      traefik.http.middlewares.{{ webserver.type }}-{{ projectname }}-redirectregex{{ loop.index }}.redirectRegex.replacement: "https://{{ publicdomain|default(projectdomain) }}/$${1}"
 {% endfor %}
 {% if varnish.enable %}