Dokuwiki, Nginx und Farmen

665
Naib

Ich versuche mehrere dokuwiki einzurichten, aber ich habe wirklich Probleme damit ...

Ich kann relativ einfach ein solches System einrichten, möchte jedoch das Farmkonzept ( https://www.dokuwiki.org/farms ) verwenden. Der Nachteil ist, dass es für Apache und nicht für Nginx geschrieben ist und ich habe auch keine Nginx-Anleitungen gefunden.

Ich kann vhost nicht verwenden, wenn dies bereitgestellt werden soll (ich habe vhost lokal getestet und kann dies konfigurieren), und daher ist das nginx-Äquivalent von htaccess erforderlich.

Das Problem scheint um die "Tier" -Urschreibung zu sein

RewriteRule ^ /? ([^ /] +) / (. *) / Farmer / $ 2? Animal = $ 1 [QSA]

RewriteRule ^ /? ([^ /] +) $ / Farmer /? Tier = $ 1 [QSA]

wird (innerhalb eines relevanten Ortes).

umschreiben ^ /? ([^ /] +) / (. *) / Farmer / $ 2? animal = $ 1;

umschreiben ^ /? ([^ /] +) $ / Farmer /? animal = $ 1;

KEIN von dem, was ich ausprobiert habe, also habe ich mich entschieden, einen Schritt zurückzutreten und den Umleitungs-Tipps ( https://www.dokuwiki.org/tips:redirect_farm ) zu folgen, und ich kann keinen funktionierenden Schritt 2 erstellen : Die URL-Bindung der Testen der Weiterleitung

Dies ist meine localhost.conf.

Server

location /

location / barn {#alias / var / www / localhost / htdocs / farmer /;

 rewrite ^/?([^/]+)/(.*) /farmer/$2?animal=$1;  rewrite ^/?([^/]+)$ /farmer/?animal=$1; } 

}

http: // localhost / barn leitet auf "Farmer" um und die Debug-Protokolle zeigen:

* 1 umgeschriebene Daten: "/ farmer /", args: "animal = barn", Client: 127.0.0.1, Server: localhost, Anforderung: "GET / barn / HTTP / 1.1", Host: "localhost"

Das Tier = Scheunenteil ist die Sorge ... gleichermaßen schlägt http: // localhost / barn / foo mit 404 fehl und die Protokolle zum Umschreiben zeigen:

umgeschriebene Daten: "/ farmer / foo", args: "animal = barn", Client: 127.0.0.1, Server: localhost, Anforderung: "GET / barn / foo HTTP / 1.1", Host: "localhost"

Was ich erwartet hatte, war animal = foo. Irgendwelche Ratschläge, wie Sie die Umschreibung korrigieren können

2

1 Antwort auf die Frage

0
Naib

Nun, ich habe es irgendwie beantwortet ...

/ var / www / localhost / htdocs / farmer ist die Basis dokuwiki / var / www / localhost / htdocs / barn ist ein Verzeichnis, in dem sich meine Farm befindet. / var / www / localhost / htdocs / barn / cow ist das 1. Tier / var / www / localhost / htdocs / barn / duck ist das 2. Tier

farmer / inc / preload.php ist gemäß den Tipps konfiguriert:

if (! defined ('DOKU_FARMDIR')) define ('DOKU_FARMDIR', '/ var / www / localhost / htdocs / barn');

cow / conf / local.protected.php ist gleich konfiguriert

$ conf ['basedir'] = '/ barn / cow /';

duck / conf / local.protected.php ist gleich konfiguriert

$ conf ['basedir'] = '/ barn / duck /';

jetzt ist die nginx localhost.conf so konfiguriert:

server { listen 80; server_name localhost; access_log /var/log/nginx/localhost_access_log main; error_log /var/log/nginx/localhost_error_log info; rewrite_log on; root /var/www/localhost/htdocs;  location ~ /(data/|conf/|bin/|inc/|install.php) { deny all; } # post-install lockdown  location / { try_files $uri $uri/ doku.php @farmer; autoindex on; } location /cow { return 301 http://$host/barn/cow/doku.php; }  location /duck { return 301 http://$host/barn/duck/doku.php; }   location ~ /barn { index doku.php; autoindex on; rewrite ^/barn/?([^/]+)/(.*) /farmer/$2?animal=$1; rewrite ^/barn/?([^/]+)$ /farmer/?animal=$1; }  location @farmer { rewrite ^/farmer/_media/(.*) /lib/exe/fetch.php?media=$1; rewrite ^/farmer/_detail/(.*) /lib/exe/detail.php?media=$1; rewrite ^/farmer/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2; rewrite ^/farmer/(.*) /doku.php?id=$1&$args; }  location ~ \.php$ { try_files $uri =404; include /etc/nginx/fastcgi.conf; fastcgi_pass 127.0.0.1:9000;  }  } 

Ich kann zu http: // localhost / farmer für die Basis, http: // localhost / cow ( navigieren zu http: //localhost/bar/cow/doku.php, intern umgeschrieben als http: // localhost / farmer /? Tier = Kuh ) für das 1. Tier und das gleiche für das 2. Tier.

Ich mag Aspekte des Nginx-Kettenladens nicht, aber es funktioniert (tm)