2012-05-25 75 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