2017-02-03 79 views
0

對於在CodeIgniter網址中刪除index.php的另一個問題,我表示歉意。我已經瀏覽了很多這裏的答案,但一直無法解決我的問題。Codeigniter:刪除index.php只能使用較少的uri段。爲什麼?

目前,我有我的本地開發服務器設置,使

  • http://localhost/project/index.php/controller/function/page
  • http://localhost/project/page

兩個負載預期。

但是,如果我嘗試加載page/subpage只有版本index.php作品:

  • http://localhost/project/index.php/controller/function/page/subpage(作品)
  • http://localhost/project/page/subpage(不工作)

第二個不調用我的控制器,但會產生一個CodeIgniter 404錯誤頁面。這讓我懷疑問題出在我的.htaccess文件中,但我不知道。我不太瞭解.htaccess文件。

.htaccess文件包含

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php/$0 [PT,L]enter code here 

我已經嘗試了各種排列組合,人們已經建議對其他類似的問題,但他們都沒有任何影響,只是一個它生產的通用PHP 404頁,而不是CodeIgniter之一。

我能做些什麼不同,以得到http://localhost/project/page/subpage加載?

routes.php文件包含:

$route['default_controller'] = 'Controller'; 
$route['404_override'] = ''; 
$route['translate_uri_dashes'] = FALSE; 
$route['(:any)'] = 'controller/index/$1'; 

config.php文件包含:

$config['index_page'] = ''; 
$config['uri_protocol'] = 'REQUEST_URI'; 

是否還有其他設置,將是有益的,我張貼?

+0

這是什麼'$ route ['(:any)'] ='controller/index/$ 1';'?這是否合理?這也與默認控制器一樣... –

+0

@AbdullaNilam它在那裏,以便我可以加載http:// localhost/project/page /。沒有這一行,默認的控制器加載http:// localhost/project /的主頁,但是我得到了http:// localhost/project/page /的404錯誤。也許我可以在那裏使用更好的東西,但是如果我知道我會使用它。有什麼建議麼? – Mehmet

回答

0

使用本.htaccess

RewriteEngine on 
RewriteCond $1 !^(index\.php|assets|image|resources|robots\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L,QSA] 

Read More on Codeigniter Documentation

+0

感謝您的建議。不幸的是,當我使用.htaccess文件時,我仍然遇到同樣的問題。 – Mehmet

+0

什麼是您的基本網址? –

+0

我不是100%確定這是你正在尋找的答案,但希望它會有所幫助...我相信我的基地網址是http:// localhost/northern /(我一直在呼叫http:// localhost/project /到目前爲止)。我的項目位於〜/ Repositories/northern /該目錄包含我的CodeIgniter應用程序/和public /目錄。公共目錄包含運行CodeIgniter的index.php文件。公共目錄從/ opt/lamp/htdocs/northern鏈接。/opt/lamp/htdocs是我的web服務器根目錄。 – Mehmet

0

,我已經找到了一個解決方案是將以下路由添加到config.php文件:

$route['(:any)/(:any)'] = 'controller/index/$1/$2'; 

這看起來凌亂我,但它解決了我的問題。我不知道我是否只是爲未來創造一個問題。

+1

這絕對不是這樣做的方式,你可以不受限制地訪問整個項目......路由是有原因的 –

+0

好點,@BrianRamsey。我會銘記在心。在我的例子中,我設計了控制器,如果它爲'$ 1'和有時'$ 2'帶來意想不到的輸入,就會拋出一個'404',所以也許我手動進行了路由選擇,這可能不是我做的最好的事情無論是。 – Mehmet

+0

我強烈建議確保你的系統和應用程序文件夾在你的文檔根目錄之外,我通常把它們放到一個'public'文件夾(包含index.php和我的所有資源)得到任何東西。 –