[英]What is routes.php in codeigniter
在codeigniter
, routes.php
的功能是什么?
我的老師接受過關於它的教導,並說如果你不使用例如以下的路線你的觀點將不起作用:
$route['blabla'] = ['blabla/blabla'];
以及它的一切!
但對我來說,它沒有使用任何路線。 我不知道為什么要使用路線。 這只是浪費時間。 誰能解釋一下?
在codeigniter中,PHP文件以不同的方式提供,而不是直接從瀏覽器訪問PHP文件。 此過程稱為路由 。
我們的代碼無需重寫 routes.php中的url即可運行。
我們都希望以更方便的方式顯示我們的網頁,以便它對訪問者(當然也包括搜索引擎)更有意義。 例如,只需通過檢查瀏覽器地址欄中的URL,即可簡要了解頁面包含的內容。 如果我們保持這一點,就像服務器腳本(PHP,Asp.NET等)可以理解的那樣,如下所示,不應該實現我們的目標:
http://yourdomain.com?p=1
http://yourdomain.com?p=2
http://yourdomain.com?w=30
http://yourdomain.com?z=234
//etc......
從上面的鏈接中,無法理解這些頁面的內容。 現在,如果它如下所示:
http://codesamplez.com/database/codeigniter-activerecord
http://codesamplez.com/programming/regular-expressions-in-php
這些更有意義,我們可以從看到URL中得到一個簡單的想法。 此外,與早期的網址相比,搜索引擎提供了更多的價值,這就是為什么它們被稱為“搜索引擎友好網址”。 所以,無論你選擇什么原因,總是更好地使用SEO友好的URL。 好的,現在,我們決定讓我們的網站更加SE /訪客友好,並希望使用這些網址。 現在,我們應該如何開發應用程序以將此URL映射到原始請求處理程序腳本?
Url Rewriting / Routing實際上是將這個seo友好URL轉換為服務器代碼可以輕松理解的格式/將請求驅動到相應的請求處理程序腳本的技術。
CodeIgniter具有用戶友好的URI路由系統,因此您可以輕松地重新路由URL。 通常,URL字符串與其對應的控制器類/方法之間存在一對一的關系。 URI中的段通常遵循這種模式 -
your-domain.com/class/method/id/
在某些情況下,您可能希望更改此默認路由機制。 CodeIgniter提供了一些工具,您可以通過它來設置自己的路由規則。
有一個特定的文件,您可以處理所有這些。 該文件位於application / config / routes.php(您已經知道)。 您將找到一個名為$ route的數組,您可以在其中自定義路由規則。 $ route數組中的鍵將決定路由的內容,值將決定路由的位置。 CodeIgniter中有三條保留路由。
$路線[ 'default_controller']
如果URI不包含數據,則此路由指示應加載哪個控制器類,這是人們加載根URL時的情況。 建議您使用默認路由,否則將顯示404頁面。 我們可以在這里設置網站的主頁,以便默認加載。
$路線[ '404_override']
此路由指示如果找不到請求的控制器,應加載哪個控制器類。 它將覆蓋默認的404錯誤頁面。 它不會影響the show_404()
函數,它將繼續加載application/views/errors/error_404.php.
的默認error_404.php
文件application/views/errors/error_404.php.
$路線[ 'translate_uri_dashes']
布爾值顯而易見,這不是一條路線。 此選項使您可以使用控制器和方法URI段中的下划線自動替換短划線(' - '),從而在需要時節省其他路徑條目。 這是必需的,因為破折號不是有效的類或方法名稱字符,如果您嘗試使用它,將導致致命錯誤。
在CI代碼中將運行沒有routes.php。 routes.php用於自定義url / routes,就像你有url一樣
example.com/pages/about_us
其中“pages”是你的控制器,“about_us”是該控制器中的方法,如果你想顯示沒有像example.com/about_us
這樣的控制器的url,那么你需要以這種方式使用routes.php
$route['about_us'] = ['pages/about_us'];
在codeigniter中路由一個主要功能,用於用戶友好的URL和SEO友好的谷歌搜索。
這是什么意思:如果有任何用戶搜索了您網站上的任何產品,那么URL將是www.domain.in/categalog/Deskstop-Intel-124343
現在在這種情況下,網址是用戶友好的如何解釋它在路由中維護。
每次url被命中控制流到routes
和從routes
到controller
$route['product/(:any)'] = 'catalog/product_lookup';
現在,categorieslog / product_lookup被解釋為產品/任何意味着有一個控制器Product
接受Id /文本作為輸入。
這就像根據我們的要求制作用戶定義的URL一樣簡單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.