0

私はNginxで遊んでいて、書き直しが必要なcmsシステムをインストールしました。通常のコードは次のようになります。

location / { try_files $uri $uri/ @rewrites; }

location @rewrites {
        rewrite ^/([^/\.]+)/([^/]+)/([^/]+)/? /index.php?page=$1&id=$2&subpage=$3 last;
        rewrite ^/([^/\.]+)/([^/]+)/?$ /index.php?page=$1&id=$2 last;
        rewrite ^/([^/\.]+)/?$ /index.php?page=$1 last;
}

しかし、このCMSはtestcmsと呼ばれる別のディレクトリにインストールしました。だから私はこれがうまくいくと思いました:

location /testcms {

fastcgi_pass phpcgi;
fastcgi_index index.php;

try_files $uri $uri/ /testcms@rewrites;

}

location /testcms@rewrites {
        rewrite ^/([^/\.]+)/([^/]+)/([^/]+)/? /testcms/index.php?page=$1&id=$2&subpage=$3 last;
        rewrite ^/([^/\.]+)/([^/]+)/?$ /testcms/index.php?page=$1&id=$2 last;
        rewrite ^/([^/\.]+)/?$ /testcms/index.php?page=$1 last;
}

ただし、これにより白いページが表示され、nginxログにエラーは発生しません。私が間違っているかもしれないアイデアはありますか?

4

1 に答える 1

0

構文エラーがあります。次のようなものでなければなりません

try_files $uri $uri/ @rewrites;

}

location @rewrites {

Nginxマニュアルから:

プレフィックス「@」は、名前付きの場所を指定します。このような場所は、リクエストの通常の処理中には使用されず、内部的にリダイレクトされたリクエストを処理することのみを目的としています

于 2012-05-25T10:29:16.453 に答える