2012-01-10 51 views
0

這是我的網站的網址:URI路由在Codigniter沒有.htaccess的

xxx.myserver.net 

在這個網站我想路由控制器,這意味着當我linkthis類型網址:

xxx.myserver.net/aaaaa 

我想重定向到控制器,我希望意味着我想重定向到:

xxx.myserver.net/index.php/controller-name/funation-name/aaaaa 

我想不要e僅使用codeigniter uri路由方法而不使用htaccess方法。

當我嘗試這樣做我得到一個錯誤信息:

Not Found 

The requested URL not found on this server. 

這是我在routes.php文件頁面提供的錯誤代碼:

$route['/(:any)'] = "xxx.myserver.net/index.php/controller-name/funation-name/$1"; 

什麼是我的代碼問題?

我該怎麼做?

+0

沒有'.htaccess',你是混淆了路由配置文件,您不能這樣做什麼'.htaccess'。路由配置文件只路由到控制器,而不是服務器上的實際文件(這是htaccess正在做的)。 – Jakub 2012-01-11 21:37:35

+0

你的意思是路由配置文件只用於路由控制器而不是服務器路徑? – Kichu 2012-01-12 04:22:48

+0

是正確的,你只能將參數傳遞給控制器​​,而不是文件或任何類型的參數。 – Jakub 2012-01-12 05:36:33

回答

1

如果不使用.htaccess文件,則不能這樣做。從較高層面來看,.htaccess文件的用途是通過CodeIgniter前端控制器(根目錄中的index.php文件)將所有請求路由到您的域。這裏是documentation,它解釋瞭如何創建.htaccess文件並從URL中刪除index.php。爲了解釋,它指出如何將任意請求視爲index.php文件的請求。

當您向xxx.myserver.net/aaaaa發送請求時,Web服務器正在您的根目錄中搜索資源aaaaa。該請求甚至沒有被CodeIgniter處理。由於您沒有資源標題爲aaaaa,因此您收到錯誤消息。

要使用沒有.htaccess文件的CodeIgniter,您需要通過index.php傳遞每個請求。例如:

xxx.myserver.net/index.php/aaaaa

然後,你可以創建這樣的路線:

$route['(:any)'] = 'controller_name/function_name/$1';

+0

我這樣設置$ route ['(:any)'] ='controller_name/function_name/$ 1';並採取上述得到這個錯誤404頁面未找到 您找不到頁面。 – Kichu 2012-01-11 04:20:25