wikkawiki용 nginx 재작성

wikkawiki용 nginx 재작성

내 서버에 WikkaWiki를 설정하고 링크 wiki.mysite.info/wikka.php?wakka=Startwiki.mysite.info/DotMG.

나는 그들의 가이드를 따르려고 노력했다.http://docs.wikkawiki.org/ModRewrite, 그러나 불완전하고 오래된 것 같습니다. 게다가 버전부터1.3.2 base_url파일 에서 수동으로 구성할 수도 없습니다 wikka.config.php.

1.3.2WikkaWiki 버전을 사용하고 있습니다 . 내 nginx 가상 호스트 파일에는 다음이 포함됩니다.

server {
    listen 80;

    server_name wiki.mysite.info;

    root /usr/share/nginx/wikka/;

    access_log /usr/share/nginx/.access/wikka;
    error_log /usr/share/nginx/.error/wikka error;

    location / {
            index index.php;
            try_files $uri $uri/ @wikka;
    }

    location @wikka {
            rewrite ^(.*/[^\./]*[^/])$ $1/ last;
            rewrite ^(.*)$ /wikka.php?wakka=$1 last;
    }

    location ~* \.php$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            include /etc/nginx/fastcgi_params;
    }
}

지금까지 작동하므로 wiki.mysite.info/APage해당 페이지를 표시할 수 있지만 모든 페이지에서 작동하지는 않습니다. 때로는 브라우저가 단순히 페이지를 다운로드합니다(어떤 이유로든 항상 페이지를 다운로드합니다 Start).

그리고 거기에 가면 파일 wiki.mysite.info/을 다운로드 할 수 있습니다 wikka.php...

게다가 위키의 링크에는 가 있으므로 wikka.php?wakka=위키를 탐색할 때마다 로 돌아갑니다 wiki.mysite.info/wikka.php?wakka=APage.

내 생각엔 뭔가 문제가 있는 것 같은데 rewrite확실하게 말할 수는 없습니다.

내용 fastcgi_params:

fastcgi_param   QUERY_STRING            $query_string;
fastcgi_param   REQUEST_METHOD          $request_method;
fastcgi_param   CONTENT_TYPE            $content_type;
fastcgi_param   CONTENT_LENGTH          $content_length;

fastcgi_param   SCRIPT_FILENAME         $request_filename;
fastcgi_param   SCRIPT_NAME             $fastcgi_script_name;
fastcgi_param   REQUEST_URI             $request_uri;
fastcgi_param   DOCUMENT_URI            $document_uri;
fastcgi_param   DOCUMENT_ROOT           $document_root;
fastcgi_param   SERVER_PROTOCOL         $server_protocol;

fastcgi_param   GATEWAY_INTERFACE       CGI/1.1;
fastcgi_param   SERVER_SOFTWARE         nginx/$nginx_version;

fastcgi_param   REMOTE_ADDR             $remote_addr;
fastcgi_param   REMOTE_PORT             $remote_port;
fastcgi_param   SERVER_ADDR             $server_addr;
fastcgi_param   SERVER_PORT             $server_port;
fastcgi_param   SERVER_NAME             $server_name;

fastcgi_param   HTTPS                   $server_https;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param   REDIRECT_STATUS         200;

답변1

다음 줄을 변경하세요.

fastcgi_param   SCRIPT_FILENAME         $request_filename;

에게:

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

그리고 다시 시도해 보세요.

답변2

나는 Google을 통해 여기에 왔고, 스스로 해결책을 찾아야 했고 심지어 이 스레드도 1년이 넘었음에도 불구하고 검색 엔진을 통해 여기로 가져온 다른 사람들을 위해 내 해결책을 여기에 게시해야 한다고 생각합니다.

내 생각에 nginx에서는 try_files가 수행한 @wikka 위치에 대한 재작성이 블록 호출을 단락시키는 것 같습니다.location ~ \.php

블록 내부의 모든 것을 다시 복사하면 문제가 해결되었습니다 location ~ \.php. location @wikka자세한 내용http://blog.dot.mg/?t=20

답변3

1.3.5방금 이전 Wikka 설치를 Apache와 Nginx/php-fpm으로 마이그레이션하는 작업을 마쳤습니다 .

참고로 적절한 재작성 규칙을 적용한 가상 호스트 정의는 다음과 같습니다.

server {
    listen      80;
    server_name wiki.domain.com;

    root        /var/www/wiki.domain.com;

    access_log  /var/log/nginx/wiki.domain.com.access.log;
    error_log   /var/log/nginx/wiki.domain.com.error.log;

    location / {
        index       wikka.php;
        try_files   $uri $uri/ @wikka;
    }

    location @wikka {
        rewrite (.*)    /wikka.php?wakka=$1;
    }

    location ~ \.php$ {
        try_files       $uri =404;
        fastcgi_pass    unix:/var/run/php5-fpm.sock;
        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include         fastcgi_params;
    }
}

관련 정보