2015-07-21 90 views
4

404個文件我有以下的服務器塊:化妝nginx的服務相對於當前路徑

server { 
    listen 80; 
    server_name petpal.co.il; 
    root /usr/share/nginx/petpal; 
    index index.php; 
    location/{ 
     try_files $uri $uri/ @extensionless-php; 
    } 
    location @extensionless-php { 
     rewrite ^(.*)$ $1.php last; 
    } 
    location ~ \.php$ { 
     try_files $uri /notfound; 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     include fastcgi_params; 
    } 
} 

我需要什麼樣的修改,以做,使根據目錄就那麼404文件將會顯示用戶目前處於,例如在「/ en」目錄中,它將顯示「/ en/notfound」,並且在目錄「/」中顯示「/ notfound」?

+0

怎麼會沒有答案?這個問題真的很複雜嗎? –

回答

0

感謝CNST幫助,我設法解決這個問題! 基本上所有我必須做的就是把這段代碼的PHP的位置外塊:

set $lang ""; 
if ($uri ~ "^/en/") { set $lang "en/"; } 
error_page 404 /${lang}notfound; 

,然後裏面的PHP塊根本就:

try_files $uri =404; 
0

也許if會工作?

set $lang ""; 
if ($uri ~ "^/en/") { set $lang "en/"; } 
try_files $uri /${lang}notfound; 

或者,如果你想要一個更一般的規則:

set $lang ""; 
if ($uri ~ "^/([a-z][a-z])/)") { set $lang "$1"; } 
try_files $uri /${lang}notfound; 
+0

嘿謝謝你的回答,但我得到一個沒有指定輸入文件的空白頁面。信息。 –

+0

@SaharAtias,對不起,但這聽起來不像是一個nginx消息!看起來你已經得到了nginx的部分工作,現在只需要確保你的錯誤信息頁面本身存在! – cnst

+0

你的第二個版本對我來說根本不起作用nginx不會從它開始,但無論如何我現在只需要en版本,並且確保文件/ en/notfound存在,它可以工作,如果我做/ someBla它重定向到/ notfound,但如果我做/ en/someBla它沒有指定輸入文件。 –