您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關如何在CI框架中隱藏url中index.php,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
具體方法如下:
1. 將以下配置信息復制并保存為.htaccess文件。
以下為.htaccess文件信息
復制代碼 代碼如下:
RewriteEngineOn
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule^(.*)$ /index.php?/$1 [L]
#如果沒有安裝mod_rewrite模塊,所有的404頁面都將被 #發送到index.php,此時,程序會像沒有設置隱藏時一樣運行
ErrorDocument404 /index.php
2. 將以上.htaccess文件上傳到CI所在項目的根目錄(即與index.php同級目錄下)
3. 修改application/config.php中的如下參數:
復制代碼 代碼如下:
$config['index_page'] = "index.php";
至
復制代碼 代碼如下:
$config['index_page'] = ""; //設置為空
以上三步,缺一不可。如果一切配置正常,你會發現,再次運行程序的時候,程序已經自動隱藏index.php這個URL段了!
Trackback(UTF-8):http://www.cnSaturn.com/trackback/40
CodeIgniter中開啟PATH_INFO時mod_rewrite隱藏index.php的問題。
在CodeIgniter中,當我將URI尋址方式從AUTO更改為PATH_INFO時,即:
復制代碼 代碼如下:
$config['uri_protocol'] = 'PATH_INFO';
注:PATH_INFO的開啟,是因為我希望通過$_GET來取值,而不是系統默認的POST方式。
在此情況下如何仍然使用以上.htaccess方案,結果將是:index.php順利隱藏,但主控制器并不能正確的獲取值。
解決方案如下,就一步:
去掉以下重寫規則中index.php后面的問號即可。
復制代碼 代碼如下:
RewriteRule^(.*)$ /index.php?/$1[L]
修改后的規則如下:
復制代碼 代碼如下:
RewriteRule^(.*)$ /index.php/$1 [L]
其他地方不變。
如何刪除index.php文件
估計很多人學習CodeIgniter第一步想做的就是如何去掉index.php,這個官方手冊就有相關教程,修改.htaccess 文件(前提是你的服務器是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。
這樣我們就可以將 https://www.jb51.net/index.php/news/view/about 變成 https://www.jb51.net/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 ,那么這個功能就被激活了。此時,你就可以通過關鍵字來調用需要的控制器和方法了:
復制代碼 代碼如下:
index.php?c=controller&m=method
以上就是如何在CI框架中隱藏url中index.php,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。