2011-05-17 98 views
1

我試圖讓這個網址上的笨安裝工作,就在今天(2.0.2)安裝了最新版本:笨設置問題

http://mydomain.com/pete/ci_test/accounts

所以我一直在路線設置我的默認控制器.PHP到test.php的,和我的控制器內,test.php的我有這樣的代碼:

class test extends CI_Controller { 

public function index() { 
    $this->load->view('test'); 
} 

public function accounts() { 
    $this->load->view('accounts'); 
} 
} 

,然後我有一個test.php的和我的看法裏面的accounts.php,它加載test.php的查看我何時去http://mydomain.com/pete/ci_test/

但是當我去http://mydomain.com/pete/ci_test/accounts它給了我404。我一直在閱讀入門,它說「默認CodeIgniter使用基於段的方法」,然後給出了一個類似於我正在做的例子。但後來我讀了一點,它說:「默認情況下,index.php文件將包含在您的URL」。所以,我加入到我的htaccess文件(位於mydomain.com/pete/ci_test/.htaccess)這樣的:

RewriteEngine on 
RewriteCond $1 !^(index\.php|images|robots\.txt) 
RewriteRule ^(.*)$ /index.php/$1 [L] 

我確信,該​​模塊加載在httpd.conf中。它仍然不會去我的accounts.php視圖。我也曾嘗試:

http://mydomain.com/pete/ci_test/index.php/accounts

但另一個404,我究竟做錯了什麼?任何建議都會有所幫助,謝謝!

回答

1

默認的控制器是當沒有url段存在的時候加載的 - 就是這樣。

如果你想/accounts加載test控制器和accounts方法,你將不得不使用一個route這樣的:

$route['accounts'] = 'test/accounts'; 

否則,你就必須有通過/test/accounts/的賬戶控制器或訪問

+0

我想我現在明白了,我已經設置了第二個控制器來加載帳戶視圖。 http://mydomain/pete/ci_test/index.php/accounts現在加載帳戶視圖,我想擺脫index.php,但我現在可以使用這個,謝謝! – 2011-05-17 17:38:10

+0

FYI皮特,主要的大寫或小寫類名不會破壞你的代碼,但正如前面提到的 - 它最好堅持建議的命名約定。 – 2011-05-17 17:41:03

2

你的控制器應爲大寫的類名:

class Test extends CI_Controller { 

並儘可能對其進行訪問,網址應爲:

編輯固定的子文件夾,現在我注意到

http://mydomain.com/pete/ci_test/test/accounts

http://mydomain.com/pete/ci_test/index.php/test/accounts

+0

無論網址的工作與當前配置 – 2011-05-17 17:31:33

+0

@Pete他們應該,除非你笨安裝不' /皮特/'。另外'CI_Controller'看起來像一箇舊版本。你使用什麼版本?最新的擴展'Controller'。 – 2011-05-17 17:34:07

+0

他說他在2.0.2上,確實使用'CI_Controller'而不是舊的'Controller'。他的安裝目錄是'pete/ci_test',大寫/小寫不應該有任何區別 - 它更像是一種風格指南。 – 2011-05-17 17:36:21

2

我走進了同樣的問題,所以我環顧四周。你應該使用這個.htaccess內容。它爲我工作。

Options +FollowSymLinks 
Options -Indexes 
DirectoryIndex index.php 
RewriteEngine on 
RewriteCond $1 !^(index\.php|resources|images|css|js|robots\.txt|favicon\.ico) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L,QSA] 
1

onteria_是正確的,你的控制器應該是大寫的。這不是要求,而是「最佳實踐」。

但是,我認爲你的控制器的命名與子文件夾的名稱是一致的。看起來您的安裝位於名爲ci_test的文件夾內。在這種情況下,訪問它的URL應該是

http://mydomain.com/pete/ci_test/test/accounts

http://mydomain.com/pete/ci_test/index.php/test/accounts

+0

控制器的大寫或小寫不應有區別。至少它不適合我,並且據我所知PHP對類或函數命名不區分大小寫......如果小寫字母是問題,他的默認控制器會工作嗎? – 2011-05-17 17:37:59

+0

我應該更好地說 - 這是一個「最佳做法」,而不是一個要求。編輯以使其更清楚。 – 2011-05-17 18:16:49

+0

我只是想向OP(以及其他可能遇到此問題的人)說清楚,這不是他的問題,就這些。特別是自2/4的答案最初提出控制器名稱套管是潛在的問題。 – 2011-05-17 18:20:58