dokuwiki、nginx 和 farms

dokuwiki、nginx 和 farms

我正在尝试设置多个 dokuwiki,但是我真的很挣扎......

我可以相对轻松地建立一个,但我想利用农场概念(https://www.dokuwiki.org/farms)。缺点是它是为 apache 而不是 nginx 编写的,而且我也没有找到任何 nginx 指南。

我无法在部署该程序的地方使用 vhost(我已经在本地测试了 vhost 并且可以对其进行配置),因此需要与 htaccess 等效的 nginx。

问题似乎出在“动物”重写上

重写规则 ^/?([^/]+)/(.*) /farmer/$2?animal=$1 [QSA]

重写规则 ^/?([^/]+)$ /farmer/?animal=$1 [QSA]

成为(在相关位置内)。

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

重写 ^/?([^/]+)$ /farmer/?animal=$1;

我尝试过的方法都不起作用,所以我决定退后一步,按照重定向提示操作(https://www.dokuwiki.org/tips:redirect_farm)我无法制作一个功能齐全的步骤 2:设置 URL 绑定重定向测试

这是我的 localhost.conf。

服务器{监听80;服务器名称localhost;访问日志

/var/log/nginx/localhost_access_log 主要;错误日志

/var/log/nginx/localhost_error_log 信息;rewrite_log 开启;root

/var/www/localhost/htdocs;#位置〜

/(data/|conf/|bin/|inc/|install.php) { 全部拒绝; }

位置 / { 自动索引开启;}

位置/谷仓 { #alias /var/www/localhost/htdocs/farmer/;

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

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

}

http://localhost/谷仓确实重定向到“farmer”并且调试日志显示:

*1 重写数据:“/farmer/”,参数:“animal=barn”,客户端:127.0.0.1,服务器:localhost,请求:“GET /barn/ HTTP/1.1”,主机:“localhost”

动物=谷仓部分令人担心……同样http://localhost/谷仓/foo失败并出现 404 并且重写日志显示:

重写数据:“/farmer/foo”,参数:“animal=barn”,客户端:127.0.0.1,服务器:localhost,请求:“GET /barn/foo HTTP/1.1”,主机:“localhost”

我原本期望的是 animal=foo。关于如何更正重写,有什么建议吗?

答案1

嗯,我已经回答过了……

/var/www/localhost/htdocs/farmer是基础 dokuwiki /var/www/localhost/htdocs/谷仓是一个保存我的农场的目录 /var/www/localhost/htdocs/谷仓/牛是第一只动物 /var/www/localhost/htdocs/谷仓/鸭是第二只动物

farmer/inc/preload.php 按照提示配置:

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

cow/conf/local.protected.php 同样配置

$conf['basedir'] = '/谷仓/牛/';

duck/conf/local.protected.php 同样配置

$conf['basedir'] = '/谷仓/鸭子/';

现在 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://本地主机/农民对于基础,http://localhost/cow(重定向至http://localhost/bar/cow/doku.php,内部重写为http://localhost/farmer/?animal=cow) 对于第一只动物,第二只动物也是一样。

我不喜欢 nginx 链式加载的某些方面,但它确实有效(tm)

相关内容