2012-05-25 47 views
0

我玩弄的Nginx和安装一个CMS系统,需要重写,正常的代码如下:nginx @rewrites目录 - 不工作?

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/ /[email protected]; 

} 

location /[email protected] { 
     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日志中没有错误。 任何想法我可能会做错什么?

+0

:)不能忍受滥用nginx命名的位置。不过,你很有创意。呵呵。 –

回答

0

存在语法错误。应该像

try_files $uri $uri/ @rewrites; 

} 

location @rewrites { 

从Nginx的manual

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

+0

mmh thx!我试了一下..但我仍然有一个白色的屏幕主页/ index.php页面的作品,但当我去索引/登录它显示一个白色的空屏幕,如果我到/testcms/index.php?page=登录它显示登录页面..我会尝试一些其他设置 – user743919

+0

它似乎没有得到“$ 1”,因为如果我服务器到/testcms/index.php?page=没有任何...它有一个simular页面(无) – user743919