Domainbasierte robots.txt

Sofern Sie in Ihrem Shopware Shop mehrere Sales-Channels besitzen, können Sie für die unterschiedlichen Domains, die verwendet werden, eigene Robots-Anweisungen definieren.


Voraussetzungen

  • Shopware Installation
  • mehrere Domains / Verkaufskanäle



Verzeichnisstruktur anpassen

Zu Beginn muss im public Verzeichnis von Shopware ein weiteres Verzeichnis namens robots erstellt werden. Innerhalb des robots Verzeichnis müssen dann die jeweiligen robots.txt Dateien mit der folgenden Namenskonvention erzeugt werden, bspw.: domain.tld.txt oder sub.domain.tld.txt.


Beispiel

Ein Beispiel zwei verschiedener robots.txt in einer Shopware Installation:

public/robots/beispiel.de.txt
public/robots/shop.beispiel.de.txt


Terminal

mkdir -p /var/www/vhosts/<plesk-domain-name>/httpdocs/public/robots
touch /var/www/vhosts/<plesk-domain-name>/httpdocs/public/robots/shop.beispiel.de.txt
touch /var/www/vhosts/<plesk-domain-name>/httpdocs/public/robots/beispiel.de.txt


In den Dateien shop.beispiel.de.txt und beispiel.com.txt können Sie nun die für die jeweilige Domain relevanten Robots-Anweisungen hinterlegen.


Plesk Control Panel

Navigieren Sie in den Datei-Browser des entsprechenden Abonnements.

Plesk Control Panel - Datei-Browser öffnen


Anschließend muss das Verzeichnis robots im public Verzeichnis erstellt werden.

Plesk Control Panel - Verzeichnis erstellen

Bestätigen Sie mit der Schaltfläche „OK" und wechseln Sie anschließend in das zuvor erstellte Verzeichnis.


Erstellen Sie in dem robots Verzeichnis für jede Domain, für die Sie eigene Robots-Anweisungen definieren wollen, eine Datei mit der folgenden Namenskonvention, bspw.: domain.tld.txt oder sub.domain.tld.txt

'domain.tld.txt' Datei erstellen


Bestätigen Sie den Dateinamen mit der Schaltfläche „OK" und wählen Sie anschließend die Datei im Datei-Browser aus, tragen in dem sich öffnenden Editor-Fenster die gewünschten Robots-Anweisungen ein und speichern die Änderung über die blau hinterlegte Schaltfläche Speichern.

Da in dem Beispiel für jeweils zwei Domains Anweisungen definiert werden sollen, muss ebenfalls die folgende Datei erstellt und mit Robots-Anweisungen gefüllt werden: beispiel.de.txt


Sie können die ursprünglich einzelne robots.txt entfernen, da diese nicht mehr verwendet wird. Beachten Sie, dass dessen Datei-Inhalt jedoch für eine der dedizierten robots.txt relevant sein könnte.



Apache2 Rewrite-Regel hinterlegen

Bei Plesk wird im Standard der Webserver Apache2 für die Auslieferung der Webseiten des jeweiligen Abonnements verwendet, weswegen hier ausschließlich eine Anpassung der .htaccess erforderlich ist.


Fügen Sie folgendes am Anfang der .htaccess Datei ein:

RewriteRule ^robots\.txt$ robots/%{HTTP_HOST}.txt [NS]


Die .htaccess Datei befindet sich ebenfalls im public Verzeichnis der Shopware Installation.



Plesk NGINX Rewrite-Regel hinterlegen

Sofern Sie den NGINX-Proxymodus deaktiviert haben, muss die Rewrite-Regel in den zusätzliche nginx-Anweisungen hinterlegt werden. Navigieren Sie hierzu in die Hosting und DNS Einstellungen Ihres Abonnements und öffnen Sie die Apache und nginx Einstellungen.


Fügen Sie dort die folgende nginx-Anweisung zu und speichern Sie die Änderung mit einem Klick auf die blaut hinterlegte Schaltfläche OK.

\nZusätzliche nginx-Anweisungen:

# multi domain robots.txt
rewrite ^/robots\.txt$ /robots/$host.txt;



Standalone NGINX Rewrite-Regel hinterlegen

Wir NGINX alleine betrieben, muss die Rewrite-Regel in dem entsprechenden Server-Block hinzugefügt werden. Je nachdem wie Sie NGINX konfiguriert haben, finden Sie die entsprechende Konfigurationsdatei unter /etc/nginx/conf.d oder in /etc/nginx/sites-available.


Für Änderungen im Verzeichnis /etc wird grundsätzlich der root Benutzer benötigt.

\nBeispiel:

server {
        listen 80;
        listen [::]:80;

        server_name domain.tld;
        root /var/www/domain.tld/public;

        # mutli domain robots.txt
+       rewrite ^/robots\.txt$ /robots/$host.txt

        index index.html index.htm;
}


Anschließend muss die Nginx-Konfiguration mit folgendem Befehl neu geladen werden:

systemctl reload nginx


Im Vergleich zu dem Befehl systemctl restart nginx sorgt der reload Befehl ausschließlich für das Neuladen der Konfigurationsdatei, sodass hierbei keine Verbindungen hart abgebrochen werden.