程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> thinkphp隱藏index.php/home,並允許訪問其他模塊,thinkphpindex.php

thinkphp隱藏index.php/home,並允許訪問其他模塊,thinkphpindex.php

編輯:關於PHP編程

thinkphp隱藏index.php/home,並允許訪問其他模塊,thinkphpindex.php


 想要達成的效果很簡單,我有兩個模塊,Home、Wechat。

http://localhost/index.php/home/index/index    縮短為:  http://localhost/index/index
http://localhost/index.php/wechat/index/index  縮短為:  http://localhost/wechat/index/index

隱藏index.php,這個比較簡單,我開啟.htaccess的支持就行,具體配置執行百度吧,我用的是apache2,建立一個軟連接就成


ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load

  重啟服務

  然後,什麼都不用做,index.php就被隱藏了

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

這就是ThinkPHP默認的.htaccess文件內容,可以看到,index.php已經可以被省略了

 

然後就是home的隱藏,如果我們直接在.htaccess文件中寫上home,那麼,其他的模塊我們就無法訪問了,就只有使用thinkphp提供的機制了

 

這裡說法就很多了,但我發現,大多都直說了一部分,都沒人說完整的。

 

我的做法是這樣的

在Common/Conf/config.php中加入配置

'DEFAULT_MODULE' => 'Home',
'MODULE_ALLOW_LIST' => array('Home','Wechat')
其中‘MODULE_ALLOW_LIST’的值是你所有允許訪問的模塊名,只有寫在這裡面的模塊才能被訪問。

最後,很多人說的在index.php中加入

define('BIND_MODULE','Home');
不建議這樣這,這樣的配置,你的項目就只有Home模塊能被訪問了,如果有多個模塊呢???難道使用?m=&c=&a=這種丑陋的形式??

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved