CodeIgniter(下面簡稱"CI")是一款國外優秀的PHP輕量級MVC框架,它支持PHP4和PHP5。是開發中小型可拓展性需求高的Web應用程序的利器。眼下你所見到的這個博客程序,正是採用CI進行的編寫。
秉承MVC架構的思想,CI中的全部控制器都須要經過單點入口文件index.php(默認)來載入調用。
也就是說。在默認情況下,全部CI開發項目的URL都形例如以下面這樣的形式:
http://localhost/index.php/blog/logs/this_is_a_test_entry
非常顯然。默認情況下。index.php在URL地址段中的存在一定程度上影響了URL的簡潔和SEO的進行。
我們能夠通過以下本文介紹的方法來去掉這個討厭的Index.php。
你也許已經注意到在CodeIgniter用戶手冊中,已經存在關於此問題的解決方法。
但官方提供的這個.htaccess配置,並非全部時候都能解決這個問題。本文如今給出一個更完好的解決方式。
注意:在繼續之前,請確認你的主機支持.htaccess配置。當中。假設Apache作為Webserver,須要開啟mod_rewrite模塊的支持;假設將IIS作為Webserver,則須要額外安裝ISAPI_Rewrite拓展。
詳細方法例如以下:
1.
下面為.htaccess文件信息 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | RewriteEngineOn RewriteBase RewriteCond RewriteCond RewriteRule^(.*)$ #假設沒有安裝mod_rewrite模塊,全部的404頁面都將被 |
3.
1 | $config['index_page'] |
至
1 | $config['index_page'] |
以上三步。缺一不可。假設一切配置正常。你會發現,再次執行程序的時候。程序已經自己主動隱藏index.php這個URL段了!
CodeIgniter中開啟PATH_INFO時mod_rewrite隱藏index.php的問題。
在CodeIgniter中,當我將URI尋址方式從AUTO更改為PATH_INFO時。即:
$config['uri_protocol']
注:PATH_INFO的開啟。是由於我希望通過$_GET來取值,而不是系統默認的POST方式。
在此情況下怎樣仍然使用以上.htaccess方案,結果將是:index.php順利隱藏,但主控制器並不能正確的獲取值。
解決方式例如以下,就一步:
去掉下面重寫規則中index.php后面的問號就可以。
/$1[L]
改動后的規則例如以下:
其它地方不變。
=============================================================================================================
【其它】跟我學站點開發框架CodeIgniter之url篇
怎樣刪除index.php文件
預計非常多人學習CodeIgniter第一步想做的就是怎樣去掉index.php,這個官方手冊就有相關教程,改動.htaccess 文件(前提是你的server是apache):
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
當然了。有非常多人依照要求改動了,可是卻出現了錯誤,全部的訪問都404了,並且。這個404是apache的404頁面。而不是CodeIgniter的404錯誤頁面。
出現這樣的問題,是對apache的rewrite規則不理解:
- 第一行、將RewriteEngine引擎設置為on,就是讓url重寫生效。
- 第二行、配置url重寫規則。!^(index\.php|images|robots\.txt) 這個正則表達式指明了哪些文件不須要重寫,而是直接訪問;
- 第三行、^(.*)$是一個正則表達式,意思是對全部請求都發送到/index.php/$1。熟悉url的人都知道,以反斜杠(/)開頭的,都是相對路徑,相對於誰呢?根,也就是網址。
所以呢,假設CodeIgniter假設不是安裝在站點的根文件夾,必定會出現錯誤。怎樣解決呢,在CodeIgniter手冊中也給出了對應的解決方式:
把上面最后一句改為:RewriteRule ^(.*)$ index.php/$1 [L]
僅僅須要去掉index.php前面的斜杠即可。
怎樣加入url后綴
通過上面的步驟。我們已經隱藏了index.php了,如今我們制作的站點更加的rest了。一般人已經無法一眼就看出你的站點是用CodeIgniter開發的,還是ROR開發的。
可是,怎樣在url后面添加后綴呢,這樣,我們甚至能夠隱藏或者偽造站點的開發語言,通過改動 config/config.php 文件,你能夠為 CodeIgniter 生成的 URL 加入一個指定的文件后綴,比方你能夠加入.html,甚至你能夠加入.asp,.jsp。
這樣我們就能夠將 http://www.hualai.net.cn/index.php/news/view/about 變成 http://www.hualai.net.cn/index.php/news/view/about.html。
怎樣使用查詢字符串
普通情況下我們不須要使用查詢字符串,可是,總有一些特殊情況,是我們用CodeIgniter的rest模式無法完畢的,這樣我們就須要在 URL 中使用查詢字符串:
index.php?c=products&m=view&id=345
CodeIgniter 默認此功能是關閉的,假設想開啟的話。打開配置文件 application/config/config.php 您能夠看到例如以下內容:
$config['enable_query_strings'] = FALSE;
$config['controller_trigger'] = 'c'; //控制器名
$config['function_trigger'] = 'm'; //方法名
$config['directory_trigger']='d'; //控制器所在子文件夾名稱
假設你將 enable_query_strings 更改為 TRUE 。那么這個功能就被激活了。此時,你就能夠通過keyword來調用須要的控制器和方法了:
index.php?c=controller&m=method
當我們在使用CodeIgniter當進行分頁,這可以派上用場。
版權聲明:本文博客原創文章,博客,未經同意,不得轉載。