Shopware 6 Wartungsmodus: Übersicht

1. Wartungsmodus vs. Passwortschutz

Zurück zur Übersicht

Bei der Erstellung, Migration oder Anpassung eines Shopware 6 Shops gibt es zwei gängige Methoden, um den Shop während der Entwicklungsphase vor Besuchern und Suchmaschinen zu schützen: der Passwortschutz per Direktive oder .htaccess-Datei und der Shopware 6 Wartungsmodus. Beide Methoden haben das gleiche Ziel – nämlich zu verhindern, dass der Shop während der Entwicklung für die Öffentlichkeit zugänglich ist und von Suchmaschinen indexiert wird. Sie unterscheiden sich jedoch grundlegend in ihrer Funktionsweise und den Möglichkeiten, wie sie den Zugriff auf den Shop steuern.:

1.1 Passwortschutz per Direktive oder .htaccess-Datei

Der Passwortschutz per Direktive oder .htaccess-Datei ist eine serverseitige Methode, die mithilfe der .htaccess-Datei und einer entsprechenden Konfiguration den Zugriff auf den Shop (samt Admin-Bereich) einschränkt. Hierbei wird der Shop so konfiguriert, dass nur bestimmte Benutzer mit einem festgelegten Passwort auf den Shop zugreifen können. Diese Methode ist besonders nützlich, wenn man den Zugang während der Entwicklungsphase streng kontrollieren möchte.

Wie funktioniert das?

Es kann eine Authentifizierung per Passwort eingerichtet werden. Hierbei müssen Benutzer, die auf den Shop zugreifen möchten, ein festgelegtes Passwort eingeben, bevor sie den Shop sehen können. Mehr dazu weiter unten.

1.2 Shopware 6 Wartungsmodus

Der Shopware 6 Wartungsmodus ist eine Funktion, die direkt in der Shopware 6-Software integriert ist. Wenn dieser Modus aktiviert ist, wird der Shop für alle Besucher und Suchmaschinen gesperrt. Nur ausgewählte Benutzer, deren IP bei dem jeweiligen Verkaufskanal eingetragen sind können auf das Shop-Frontend zugreifen.

Wie funktioniert das?

Wartungsmodus aktivieren: In den Shopware 6 Verkaufskanälen kann der Wartungsmodus mit einem Klick aktiviert werden. In diesem Fall wird allen Besuchern des Shops eine Wartungsseite angezeigt, auf der steht, dass der Shop derzeit nicht erreichbar ist. Suchmaschinen können ebenfalls nicht auf die Seite zugreifen.

Videoanleitung gefällig? Hier entlang

Zugriffssteuerung: Unter dem Button wo der Wartungsmodus aktiviert wird ist ein Feld in dem man seine IP-Adresse eintragen kann. Bei statischen IP-Adresse reicht es diese einmal einzutragen, bei dynamischen IP-Adressen kann wird man spätestens nach einem Tag dort eine andere IP-Adresse eintragen müssen.

1 - Shopware Wartungsmodus aktivieren

1 – Shopware Wartungsmodus aktivieren

Passwortschutz per Direktive (nginx)

Zurück zur Übersicht

Für Nutzer von Timme Hosting oder anderen Anbietern, die nginx verwenden, lässt sich der Passwortschutz über eine Direktive einrichten.

Schritte zur Einrichtung

  1. Im ISPConfig-Bereich anmelden
  2. Gehe zu System (oben) > System (in dr Sidebar) > Direktiven-Schnipsel
  3. Folgende Werte eintragen:
  • Name: Shopware 6 Passwortschutz
  • Typ: nginx
  • Sichtbar für Kunden: Ja
  • Aktiv: Ja
{IF_FOLDER}rewrite ^/{FOLDERNOTRAILINGSLASH}$ /{FOLDER} permanent;

location = /{FOLDER}robots.txt {
        allow all;
        log_not_found off;
        access_log off;
        if (!-e $request_filename){
                rewrite ^/{FOLDER}robots.txt$ /{FOLDER}index.php last;
        }
}

location @rewriteapp{FOLDERMD5} {
        root {DOCROOT}{FOLDER}public/;
        client_max_body_size 100M;
                rewrite ^/{FOLDER}(.*)$ /{FOLDER}index.php last;
}

location /{FOLDER} {
        alias {DOCROOT}{FOLDER}public/;
        client_max_body_size 100M;
        index index.php;
        http2_push_preload on;

        rewrite ^/{FOLDER}(.+)\.php/(.*)$ /{FOLDER}$1.php last;

        try_files $uri @rewriteapp{FOLDERMD5};

        location ~ /{FOLDER}(sitemap.xml|sitemapMobile.xml) {
                allow all;
                log_not_found off;
                access_log off;
                if (!-e $request_filename){
                        rewrite ^/{FOLDER}sitemap.xml$ /{FOLDER}index.php last;
                        rewrite ^/{FOLDER}sitemapMobile.xml$ /{FOLDER}index.php last;
                }
        }

        ### SECURITY ###
        ## Deny all attems to access possible configuration files
        #location ~ \.(tpl|yml|ini|log)$ {
        #       return 404;
        #}

        # allow for api access even if folder protection is active
        location ~ /{FOLDER}api/ {
                auth_basic off;
                allow all;
                client_max_body_size 100M;
                rewrite ^/{FOLDER}(.*)$ /{FOLDER}index.php last;
                location ~ \.php$ {
                        auth_basic off;
                        allow all;
                        try_files $uri =404;
                        include /etc/nginx/fastcgi_params;
                        {FASTCGIPASS}
                        fastcgi_index index.php;
                        fastcgi_param SCRIPT_FILENAME $request_filename;
                        fastcgi_intercept_errors on;
                        fastcgi_temp_file_write_size 10m;
                        fastcgi_busy_buffers_size    512k;
                        fastcgi_buffer_size          512k;
                        fastcgi_buffers           16 512k;
                        fastcgi_read_timeout 1200;
                        fastcgi_param HTTP_AUTHORIZATION $http_authorization;
                        http2_push_preload on;
                }
         }



        ## Deny access to media upload folder
        location ^~ /{FOLDER}media/temp/ {
                return 404;
        }

        # Shopware caches and logs
        location ^~ /{FOLDER}var/ {
                return 404;
        }

        # Deny access to root files
        location ~ (autoload\.php|composer\.(json|lock|phar)|CONTRIBUTING\.md|eula.*\.txt|license\.txt|README\.md|UPGRADE-(.*)\.md|.*\.dist)$ {
                return 404;
        }

        # Restrict access to shop configs files
        location ~ /{FOLDER}(web\/cache\/(config_\d+\.json|all.less))$ {
                return 404;
        }

        # Restrict access to theme configurations
        location ~ /{FOLDER}themes/(.*)(.*\.lock|package\.json|Gruntfile\.js|all\.less)$ {
                return 404;
        }

        location ^~ /{FOLDER}files/documents/ {
                return 404;
        }

        location ^~ /{FOLDER}files/backup/ {
                return 404;
        }

        # Restrict access to plugin xmls
        location ~ /{FOLDER}custom/.*(config|menu|services|plugin)\.xml$ {
                # rewrite, because this is the default behaviour for non-existing files and
                # makes it difficult to detect whether a plugin is installed or not by checking the files
                rewrite . /index.php?controller=Error&action=pageNotFoundError last;
        }
        ### SECURITY END ###


        ### INSTALLATION BLOCK ###
        location /{FOLDER}recovery/install {
                if (!-e $request_filename){
                    rewrite . /{FOLDER}recovery/install/index.php last;
                }
        }

        location /{FOLDER}recovery/update {
                if (!-e $request_filename){
                        rewrite . /{FOLDER}recovery/update/index.php last;
                }
        }
        ### INSTALLATION BLOCK END ###

        location ~ \.php$ {
                auth_basic off;
                allow all;
                try_files $uri =404;
                include /etc/nginx/fastcgi_params;
                {FASTCGIPASS}
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $request_filename;
                fastcgi_intercept_errors on;
                fastcgi_temp_file_write_size 10m;
                fastcgi_busy_buffers_size    512k;
                fastcgi_buffer_size          512k;
                fastcgi_buffers           16 512k;
                fastcgi_read_timeout 1200;
                fastcgi_param HTTP_AUTHORIZATION $http_authorization;
                #fastcgi_param SHOPWARE_ENV $shopware_env if_not_empty;
                http2_push_preload on;
        }
}
2 - Timme Hosting Direktiven Schnipsel

2 – Timme Hosting Direktiven Schnipsel

3 - Direktiven Schnipsel Einstellungen

3 – Direktiven Schnipsel Einstellungen

Fertig? Ok.

Jetzt kannst du auf den Punkt Webseiten, deine Webseite auswählen und dann bei der Konfiguration Shopware 6 Passwortschutz anstatt Shopware 6.x auswählen. Das neu angelegte Profil ist ganz unten im Dropdown Menü.

4 - Webseiten Einstellungen Passwortschutz

4 – Webseiten Einstellungen Passwortschutz

Das gleiche Ergebnis läßt sich auch mit dem Einsatz einer .htaccess Datei auf Apache Servern relativ einfach umsetzen. nginx ist in Sachen Konfiguration teils etwas gewöhnungsbedürftig, wenn man sich aber einmal reingefuchst hat mag man es nicht mehr missen.

Wir verwenden das Schnipsel auf einem Managed vServer v71 NVMe. (PARTNERLINK) Solltet ihr einen anderen Server nutzen erfragt bei eurem Hosting Anbieter den korrekten Schnipsel.

Diese Methode stellt eine effektive Möglichkeit dar, den Shop während der Entwicklung abzusichern.

Passwortschutz per .htaccess Datei

Zurück zur Übersicht

Alternativ lässt sich der Schutz mit einer .htaccess-Datei auf Apache-Servern umsetzen.

Einrichtung mit .htaccess

  1. Erstelle eine Datei .htaccess im Root-Verzeichnis deines Shops.
  2. Füge folgenden Code ein:
AuthType Basic
AuthName "Geschützter Bereich"
AuthUserFile /pfad/zu/.htpasswd
Require valid-user

Zusätzlich wird eine .htpasswd-Datei benötigt, in der Benutzername und Passwort gespeichert werden.

Wann sollte der Wartungsmodus verwendet werden?

Zurück zur Übersicht

Der Wartungsmodus sollte nur für kurzfristige Updates genutzt werden.

Probleme mit dem Wartungsmodus:

  • Kann versehentlich deaktiviert werden
  • Google könnte die Seite crawlen und als Duplicate Content einstufen
  • Kann zu Rankingverlusten führen

Stattdessen empfiehlt sich der Passwortschutz oder eine Staging-Umgebung.

Staging-Umgebungen als Alternative

Zurück zur Übersicht

Eine Staging-Umgebung ist eine Kopie des Live-Shops, in der neue Funktionen getestet werden können, ohne die Hauptseite zu beeinflussen.

Vorteile einer Staging-Umgebung:

  • Ermöglicht sichere Tests
  • Verhindert SEO-Probleme
  • Vermeidet Indexierung durch Suchmaschinen

Quellen und weiterführende Links

Zurück zur Übersicht

Dein Shop befindet sich gerade im Umbruch und du suchst einen kompetenten Partner, der dich während der Entwicklung unterstützt? Dann vereinbare jetzt einen Termin mit uns – wir stehen dir gerne zur Seite und helfen dir weiter!

: