2

Я пытаюсь настроить несколько докувики, но я действительно изо всех сил ...

Я могу настроить его относительно легко, но я бы хотел использовать концепцию фермы ( https://www.dokuwiki.org/farms ). Недостатком является то, что он написан для apache, а не nginx, и в то же время я не нашел ни одного руководства nginx.

Я не могу использовать vhost, где он должен быть развернут (у меня есть локальный тест vhost, и я могу настроить это), и поэтому требуется эквивалент hginccess nginx.

Проблема, кажется, вокруг "животного" переписать

RewriteRule ^/?([^/]+)/(. *)/ фермер / $ 2?животное = 1 доллар США [QSA]

RewriteRule ^/?([^/]+) $ / фермер /?животное = 1 доллар США [QSA]

становится (в соответствующем месте).

переписать ^/?([^/]+) /(. *) / фермер / $ 2?животное = $ 1;

переписать ^/?([^/]+) $ / фермер /?животное = $ 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 ответ1

0

Ну, я вроде ответил на это ...

/var/www/localhost/htdocs/farmer является базой докувики /var/www/localhost/htdocs/barn - это каталог, в котором хранится моя ферма /var/www/localhost/htdocs/barn/ корова является первым животным /var/www/localhost/htdocs/ сарай / утка является вторым животным

farmer/inc/preload.php настроен согласно советам:

если(!define ('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/? животное = корова) для 1-го животного и то же для 2-го.

Мне не нравятся аспекты цепной загрузки nginx, но это работает (тм)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .