一、環(huán)境準(zhǔn)備
在進(jìn)行URL隱藏之前,我們需要先檢查一下本地環(huán)境是否支持偽靜態(tài)功能和URL重寫(xiě)功能,這樣才能順利進(jìn)行URL隱藏操作。首先我們要確保安裝了Apache或者Nginx等web服務(wù)器,然后在配置文件中啟用偽靜態(tài)和URL重寫(xiě)功能,這樣才能使得框架識(shí)別生成美化后的URL。
二、開(kāi)啟URL隱藏
打開(kāi)配置文件
在thinkPHP5的配置文件中,找到app.php文件,找到url_html_suffix配置項(xiàng),將其設(shè)置為空字符串,即:
'url_html_suffix' => ''
登錄后復(fù)制
這樣就允許URL不帶后綴了。
配置路由
通過(guò)在thinkphp5中配置路由規(guī)則,訪問(wèn)URL可以映射到相應(yīng)的控制器或操作方法。我們需要針對(duì)每個(gè)控制器或操作方法進(jìn)行對(duì)應(yīng)的路由設(shè)置,將其對(duì)應(yīng)的URL映射到一個(gè)有意義的內(nèi)容上,這樣才能使得隱藏的效果發(fā)揮出來(lái),例如:
Route::get('news/:id','index/index/news',[],['id'=>'\d+']);
登錄后復(fù)制
這樣,訪問(wèn)/news/1這個(gè)URL時(shí),就會(huì)自動(dòng)調(diào)用index控制器的news操作方法,并將請(qǐng)求參數(shù)id設(shè)置為1。
配置服務(wù)器
在Apache或者Nginx中也要進(jìn)行相應(yīng)的配置。以Apache為例,在.htaccess中添加以下內(nèi)容:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L]
登錄后復(fù)制
這段代碼中,RewriteEngine on是開(kāi)啟Apache的URL重寫(xiě)功能;RewriteCond %{REQUEST_FILENAME} !-d和RewriteCond %{REQUEST_FILENAME} !-f是排除掉訪問(wèn)文件和目錄的請(qǐng)求,避免對(duì)靜態(tài)資源的訪問(wèn)造成影響;最后RewriteRule用于將URL指向thinkPHP入口文件index.php,并帶上路由信息。
三、附加功能
設(shè)置URL后綴
我們可以通過(guò)設(shè)置URL后綴進(jìn)一步加強(qiáng)應(yīng)用的安全性。例如,可以將所有的URL后綴設(shè)置成.shtml、.html、.shtml等,這樣可以有效避免對(duì)我們的應(yīng)用造成攻擊。
可以在配置文件中,找到url_html_suffix選項(xiàng)并加上相應(yīng)的后綴即可,例如:
'url_html_suffix' => 'shtml|html|htm'
登錄后復(fù)制
自動(dòng)識(shí)別URL
在Route類(lèi)的register方法中添加一個(gè)路由規(guī)則,以便框架可以自動(dòng)解析URL。例如:
if (is_file(APP_PATH . 'route.php')) { Route::get('/', 'index/index'); Route::get('build', 'index/build'); include_once APP_PATH . 'route.php'; }
登錄后復(fù)制
這樣,如果有符合規(guī)則的URL,將自動(dòng)轉(zhuǎn)發(fā)到其對(duì)應(yīng)的控制器或操作方法。
以上就是thinkPHP5中怎么隱藏入口文件的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注www.xfxf.net其它相關(guān)文章!