Докувики, нгинкс и фермы
Я пытаюсь настроить несколько докувики, но я действительно изо всех сил...
Я могу настроить его относительно легко, но я хотел бы использовать концепцию фермы ( https://www.dokuwiki.org/farms). Недостатком является то, что он написан для apache, а не nginx, и в то же время я не нашел никаких руководств по nginx.
Я не могу использовать vhost, где он должен быть развернут (у меня есть локальный тест vhost, и я могу это настроить), и поэтому требуется эквивалент hginccess nginx.
Проблема, кажется, вокруг "животного" переписать
RewriteRule ^/?([^/]+)/(.*) / Farmer/$2? Animal=$1 [QSA]
RewriteRule ^ /? ([^ /] +) $ / Farmer/? Animal=$1 [QSA]
становится (в соответствующем месте).
переписать ^ /? ([^ /] +) / (. *) / фермер / $ 2? животное =$1;
переписать ^/?([^/]+)$ /farmer/?animal=$1;
Ни одно из того, что я попробовал, не работает, поэтому я решил вернуться назад и следовать советам по перенаправлению ( https://www.dokuwiki.org/tips:redirect_farm), и я не могу создать работающий Шаг 2. Настройка URL-адреса, связывающего тестирование перенаправления
Это мой localhost.conf.
сервер {слушай 80; имя_сервера localhost; access_log
/ var / log / nginx / localhost_access_log main; журнал ошибок
/var/log/nginx/localhost_error_log info; rewrite_log on; корень
/ Var / WWW / локальный / HTDOCS; #location ~
/(data/|conf/|bin/|inc/|install.php) {отрицать все; }
location / {autoindex on; }
местоположение / сарай {#alias / var / www / localhost / htdocs / farmer /;
rewrite ^/?([^/]+)/(.*) /farmer/$2?animal=$1; rewrite ^/?([^/]+)$ /farmer/?animal=$1; }
}
http://localhost/barn перенаправляет на "фермера", а в журналах отладки показано:
* 1 переписанные данные: "/farmer/", args: "animal=barn", клиент: 127.0.0.1, сервер: localhost, запрос: "GET /barn/ HTTP/1.1", хост: "localhost"
часть animal = barn вызывает беспокойство... в равной степени http://localhost/barn/foo завершается с 404, и журналы перезаписи показывают:
переписанные данные: "/ farmer / foo", args: "animal = barn", клиент: 127.0.0.1, сервер: localhost, запрос: "GET /barn/foo HTTP/1.1", хост: "localhost"
то, что я ожидал, было животное = Фу. Любой совет, как исправить переписать
1 ответ
Ну, я вроде ответил на это...
/var/www/localhost/htdocs/ farmer - это база докувиков /var/www/localhost/htdocs/barn - это каталог, в котором хранится моя ферма/var/www/localhost/htdocs/barn / корова - первое животное /var/www/localhost/htdocs/ сарай / утка является вторым животным
farmer / inc / preload.php настроен согласно советам:
if (!fined ('DOKU_FARMDIR')) define ('DOKU_FARMDIR', '/var/www/localhost/htdocs/barn');
cow / conf / local.protected.php одинаково настроен
$ conf ['basedir'] = '/ barn / cow /';
duck / conf / local.protected.php одинаково настроен
$conf['basedir'] = '/barn/duck/';
Теперь nginx localhost.conf настроен так:
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;
}
}
Я могу перейти к http://localhost/farmer для базы, http://localhost/cow (перенаправление на http://localhost/bar/cow/doku.php, внутренне переписанное как http://localhost/farmer/?animal=cow) для 1-го животного и то же для 2-го.
Мне не нравятся аспекты цепной загрузки nginx, но это работает (тм)