WordPress: Multisite in Foldern und nginx

WordPress bietet von Haus aus die Verwaltung von so genannten Multisite-Umgebungen an. Sprich man kann mehrere Blogs / Webseiten mit einer Installation verwalten. Selbiges kennt man auch aus Typo3. Ich kannte diese Installationen bisher eher domainbasiert. Ich habe also entweder Subdomains oder „richtige“ Domains, unter welchem der jeweilige Blog läuft. Beispiel: blog.kundenname1.de, www.kundenname1.de, www.kundenname2.de. Das funktioniert im Regelfall recht gut ohne weitere Anpassungen von nginx.

Aufgabe

Neulich hatte ich jedoch einen Sonderfall: Es soll für den Blog zunächst eine Auswahlseite geben. Von dieser aus kommt man auf die unterschiedlichen Blogs. Das liesse sich auch über einfach über Kategorien lösen. Allerdings sollen die einzelnen Benutzer innerhalb ihres „Blogs“ bleiben und nicht die Beiträge der anderen Benutzer sehen. Die beiden Blogs sollten in Unterverzeichnissen verfügbar gemacht werden:

kundenname.de – Blogauswahl
kundenname.de/blog1 – Blog zum Unternehmensbereich 1
kundenname.de/blog2 – Blog zum Unternehmensbereich 2

Um dies zu erreichen kann man einfach die Standard Multisite-Installation von WordPress durchführen.Eine gute Anleitung findet sich hier. Dabei gilt es darauf zu achten diese mit Subdirectories einzurichten, eine spätere Änderung hat sich als nicht ganz so trivial herausgestellt. Anschliessend richtet man sich über die Netzwerkverwaltung die einzelnen Blogs „Blogauswahl“, „Blog 1“ und „Blog 2“ ein. Jedoch sind bis auf die Blogauswahl die beiden Blogs mit ihren Verzeichnissen nicht erreichbar. Man kommt nur auf den Blog Übersicht, die anderen beiden Blogs bringen im Backend wie Frontend einen Fehler 500

Hierfür muss man die Konfiguration in nginx etwas anpassen, was jedoch mit ein paar zusätzlichen Zeilen erledigt ist.

server {
    listen   80;

    root /var/www/kundenname.de/htdocs;
        index index.php;

    server_name kundenname.de;

    error_log /var/log/nginx/kundenname.de.error.log;
    access_log /var/log/nginx/kundenname.de.access.log;


    client_max_body_size 100M;
    client_body_buffer_size 128k;


    if (!-e $request_filename) {
        rewrite /wp-admin$ $scheme://$host$uri/ permanent;
        rewrite ^(/[^/]+)?(/wp-.*) $2 last;
        rewrite ^(/[^/]+)?(/.*\.php) $2 last;
    }

    location / {
        try_files $uri $uri/ /index.php?$args ;
    }

    location ~ \.php$ {
        try_files $uri =404;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass 127.0.0.1:9001;
        fastcgi_read_timeout 300;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|webp)$ {
        expires 8d;
        log_not_found off;
        gzip  on;
    }
}

 


Beitrag veröffentlicht

in

,

von

Schlagwörter: