nginx @rewrites目录 - 不工作?

时间:2012-05-25 10:23:56

标签: nginx rewrite

我正在玩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日志中没有错误。 我还有什么可能做错的?

1 个答案:

答案 0 :(得分:0)

有语法错误。应该像

try_files $uri $uri/ @rewrites;

}

location @rewrites {

来自Nginx manual

  

前缀“@”指定命名位置。在正常处理请求期间不使用这些位置,它们仅用于处理内部重定向的请求

相关问题