溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

如何在CI框架中隱藏url中index.php

發(fā)布時(shí)間:2021-01-11 15:59:41 來(lái)源:億速云 閱讀:165 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

本篇文章給大家分享的是有關(guān)如何在CI框架中隱藏url中index.php,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話(huà)不多說(shuō),跟著小編一起來(lái)看看吧。

具體方法如下:

1. 將以下配置信息復(fù)制并保存為.htaccess文件。
以下為.htaccess文件信息

復(fù)制代碼 代碼如下:


RewriteEngineOn

RewriteBase / 

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule^(.*)$ /index.php?/$1 [L]     

#如果沒(méi)有安裝mod_rewrite模塊,所有的404頁(yè)面都將被 #發(fā)送到index.php,此時(shí),程序會(huì)像沒(méi)有設(shè)置隱藏時(shí)一樣運(yùn)行  
ErrorDocument404 /index.php

2. 將以上.htaccess文件上傳到CI所在項(xiàng)目的根目錄(即與index.php同級(jí)目錄下)

3. 修改application/config.php中的如下參數(shù):

復(fù)制代碼 代碼如下:


$config['index_page'] = "index.php";

復(fù)制代碼 代碼如下:


$config['index_page'] = ""; //設(shè)置為空

以上三步,缺一不可。如果一切配置正常,你會(huì)發(fā)現(xiàn),再次運(yùn)行程序的時(shí)候,程序已經(jīng)自動(dòng)隱藏index.php這個(gè)URL段了!

Trackback(UTF-8):http://www.cnSaturn.com/trackback/40

CodeIgniter中開(kāi)啟PATH_INFO時(shí)mod_rewrite隱藏index.php的問(wèn)題。

在CodeIgniter中,當(dāng)我將URI尋址方式從AUTO更改為PATH_INFO時(shí),即:

復(fù)制代碼 代碼如下:


$config['uri_protocol'] = 'PATH_INFO';

注:PATH_INFO的開(kāi)啟,是因?yàn)槲蚁Mㄟ^(guò)$_GET來(lái)取值,而不是系統(tǒng)默認(rèn)的POST方式。

在此情況下如何仍然使用以上.htaccess方案,結(jié)果將是:index.php順利隱藏,但主控制器并不能正確的獲取值。

解決方案如下,就一步:

去掉以下重寫(xiě)規(guī)則中index.php后面的問(wèn)號(hào)即可。

復(fù)制代碼 代碼如下:


 RewriteRule^(.*)$ /index.php?/$1[L]

修改后的規(guī)則如下:

復(fù)制代碼 代碼如下:


 RewriteRule^(.*)$ /index.php/$1 [L]

其他地方不變。

如何刪除index.php文件

估計(jì)很多人學(xué)習(xí)CodeIgniter第一步想做的就是如何去掉index.php,這個(gè)官方手冊(cè)就有相關(guān)教程,修改.htaccess 文件(前提是你的服務(wù)器是apache):

復(fù)制代碼 代碼如下:


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

當(dāng)然了,有很多人按照要求修改了,但是卻出現(xiàn)了錯(cuò)誤,所有的訪(fǎng)問(wèn)都404了,而且,這個(gè)404是apache的404頁(yè)面,而不是CodeIgniter的404錯(cuò)誤頁(yè)面。

出現(xiàn)這種問(wèn)題,是對(duì)apache的rewrite規(guī)則不理解:

    第一行、將RewriteEngine引擎設(shè)置為on,就是讓url重寫(xiě)生效;
    第二行、配置url重寫(xiě)規(guī)則,!^(index\.php|images|robots\.txt) 這個(gè)正則表達(dá)式指明了哪些文件不需要重寫(xiě),而是直接訪(fǎng)問(wèn);
    第三行、^(.*)$是一個(gè)正則表達(dá)式,意思是對(duì)所有請(qǐng)求都發(fā)送到/index.php/$1,熟悉url的人都知道,以反斜杠(/)開(kāi)頭的,都是相對(duì)路徑,相對(duì)于誰(shuí)呢?根,也就是網(wǎng)址。

所以呢,如果CodeIgniter如果不是安裝在網(wǎng)站的根目錄,必然會(huì)出現(xiàn)錯(cuò)誤。如何解決呢,在CodeIgniter手冊(cè)中也給出了相應(yīng)的解決方案:

把上面最后一句改為:

復(fù)制代碼 代碼如下:


RewriteRule ^(.*)$ index.php/$1 [L]

只需要去掉index.php前面的斜杠就行。

如何添加url后綴

通過(guò)上面的步驟,我們已經(jīng)隱藏了index.php了,現(xiàn)在我們制作的網(wǎng)站更加的rest了,一般人已經(jīng)無(wú)法一眼就看出你的網(wǎng)站是用CodeIgniter開(kāi)發(fā)的,還是ROR開(kāi)發(fā)的。

但是,如何在url后面增加后綴呢,這樣,我們甚至可以隱藏或者偽造網(wǎng)站的開(kāi)發(fā)語(yǔ)言,通過(guò)修改 config/config.php 文件,你可以為 CodeIgniter 生成的 URL 添加一個(gè)指定的文件后綴,比如你可以添加.html,甚至你可以添加.asp,.jsp。

這樣我們就可以將 https://www.jb51.net/index.php/news/view/about 變成 https://www.jb51.net/index.php/news/view/about.html。
如何使用查詢(xún)字符串

一般情況下我們不需要使用查詢(xún)字符串,但是,總有一些特殊情況,是我們用CodeIgniter的rest模式無(wú)法完成的,這樣我們就需要在 URL 中使用查詢(xún)字符串:

復(fù)制代碼 代碼如下:


    index.php?c=products&m=view&id=345

CodeIgniter 默認(rèn)此功能是關(guān)閉的,如果想開(kāi)啟的話(huà),打開(kāi)配置文件 application/config/config.php 您可以看到如下內(nèi)容:

復(fù)制代碼 代碼如下:


    $config['enable_query_strings'] = FALSE;
    $config['controller_trigger'] = 'c'; //控制器名
    $config['function_trigger'] = 'm'; //方法名
    $config['directory_trigger']='d'; //控制器所在子目錄名稱(chēng)

如果你將 enable_query_strings 更改為 TRUE ,那么這個(gè)功能就被激活了。此時(shí),你就可以通過(guò)關(guān)鍵字來(lái)調(diào)用需要的控制器和方法了:

復(fù)制代碼 代碼如下:


    index.php?c=controller&m=method

以上就是如何在CI框架中隱藏url中index.php,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI