Nginx och WordPress Multisite Subdirectories

Har ju fnulat en hel del hur man skall kunna få WordPress att funka som en multisite bloggportal med webbservern Nginx. Att sätta upp Nginx var ju väldigt enkelt, och WordPress har man ju satt upp hundratals gånger vid det här laget antar jag. ;)  Hur svårt skulle det då vara tänkte jag. Av nån anledning så funkade ingen av de guider och annat jag hittade på nätet. Har lagt ner otroligt mycket tid på att få det att funka, men inte lyckas. Till slut fick jag tag på en kille på IRC som hade koll på det här med rewrite-regler för just Nginx. Postar detta mest för egen del, men fort nog kanske någon annan stöter på samma problem.

Problemet jag fick med alla de rewrite-regler jag hittade på nätet var att allt funkade utom just admin-läget för alla bloggar utom själva huvudbloggen. Skall tillägga att detta är för installation av bloggar i underkataloger och inte subdomän. Direkt man gick till en bloggadress och lade till wp-admin så såg det ut som att css saknades. (http://site.se/blogg1/wp-admin) Det hade att göra med att rewritereglerna för wp-admin/load-scripts.php och wp-admin/load-styles.php inte kunde laddas. Andra filer i wp-admin hittades, vilket gjorde det hela så besynnerligt.

Postar sitekonfigurationen här för framtida referens och för andra som kanske letar efter samma sak. Ingen snygg formatering i wordpress, men raderna skall stämma iaf.

 

server {
listen 192.168.22.42:80;
server_name bloggar.site.se;
server_name_in_redirect off;
port_in_redirect off;
access_log /var/log/bloggar-access.log;
error_log /var/log/bloggar-error.log info;
rewrite_log on;
index index.php index.html index;
root /var/www/bloggar.site.se;

location / {
try_files $uri $uri/ @rewrite;
}

location @rewrite {
rewrite ^/[^/]*(/wp-admin)$ $1/ permanent;
rewrite ^/[^/]*/files/(.*)$ /wp-includes/ms-files.php?file=$1 last;
rewrite ^ /index.php?q=$uri;
}

location ~ ^/[^/]*(?<u>/wp-(admin|content|includes)/.*) {
rewrite ^ $u;
}

location ~ \.php$ {
include         fastcgi_params;
fastcgi_param   SCRIPT_FILENAME $request_filename;
fastcgi_pass    127.0.0.1:9100;
}
}

 


Leave a Reply

Your email address will not be published. Required fields are marked *