2016-05-12 65 views
0

我在Nginx服務器上運行CodeIgniter 3.0.6,子路徑最終服務於/index.php,而不是/<installdir>/index.php。因此,如果我要求/CodeIgniter-3.0.6/home/,我將按照預期的方式替換/index.php頁面,而不是/CodeIgniter-3.0.6/index.php。請注意,我的CodeIgniter應用程序最終將駐留在/2016/中。CodeIgniter在Nginx上調用/index.php而不是/basefolder/index.php?

我懷疑這是由於我的Nginx安裝配置錯誤,而不是與CodeIgniter相關的東西?我的Nginx安裝在Ubuntu 16.04上運行。/etc/nginx/sites-enabled/default的內容爲:

location/{ 
    try_files $uri $uri/ /index.php; 
} 

location ~ \.php$ { 
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; 
    include fastcgi.conf; 
} 

是否還有其他我應該更改的內容?

+0

你需要'/ index.php'還是隻需要改變'try_files'的默認值?有關更多信息,請參見[本文檔](http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files)。 –

+0

我會嘗試沒有。我正在以其他一些例子爲基礎。 –

回答

0

如果您的服務器具有在/CodeIgniter-3.0.6/index.php的主入口點的單個應用程序,你應該設置你的位置是這樣的:

location/{ 
    try_files $uri $uri/ /CodeIgniter-3.0.6/index.php; 
} 
location ~ \.php$ { 
    try_files $uri =404; 
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; 
    include fastcgi.conf; 
} 

這樣一來,任何URI,這並不是一個資源文件或比賽一個.php文件,將被路由到您的應用程序默認入口點/CodeIgniter-3.0.6/index.php

但是,如果有多個應用程序,使得/index.php/CodeIgniter-3.0.6/index.php是兩個不同的入口點,你可能要設置位置爲每個應用程序,可能是這樣的:

location/{ 
    try_files $uri $uri/ /index.php; 
} 
location /CodeIgniter-3.0.6 { 
    try_files $uri $uri/ /CodeIgniter-3.0.6/index.php; 
} 
location ~ \.php$ { 
    try_files $uri =404; 
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; 
    include fastcgi.conf; 
} 

這樣,只有以/CodeIgniter-3.0.6開頭的URI纔會被路由到該應用程序的默認入口點。