RT.
1:目的
我現在有一個項目,使用ThinkPHP開發。網站首頁的地址是:
http://www.A.com/index.php/Home/Index/index.html
我現在需要達到的目標是,在訪問A.com的時候,等價於訪問http://www.A.com/index.php/Home/Index/index.html
2:環境介紹
我的環境是LAMP(Linux+Apache2+Mysql+PHP),使用框架是ThinkPHP 3.2.2版本。
3:思路介紹
3.1.設置服務器根目錄爲該項目文件夾;
我的服務器操作系統爲ubuntu。根據查考,debian/ubuntu的apache2的配置文件長得比較奇葩,設置服務器默認訪問的根目錄,配置文件在/etc/apache2/sites-available/000-default.conf中,找到如下字段:
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/sx //將該配置選項後面的路徑修改爲你的項目根目錄
這樣子通過A.com就能直接訪問項目文件夾。當然,如果你的服務器只是用來給一個網站服務或者是有建多個虛擬機,可以將整個項目文件夾下的內容放在默認的Apache服務器目錄下,就可以免去這一步了。
3.2.設置服務器默認訪問的頁面爲index.php;
第二步,是修改服務器默認訪問的頁面。我們的Apache2默認訪問的頁面是index.html。
你的ThinkPHP無論是單入口文件(只有index.php)還是多入口文件(例如index.php負責Home模塊,而admin.php負責Admin模塊)。都可以通過這個設置去使得在訪問A.com的時候自動定位的index.php或者admin.php中去。
找到/etc/apache2.conf文件,並找到如下字段:
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
DirectoryIndex index.php //設置的默認訪問的頁面,也可以是admin.php
</Directory>
這個通過這樣設置,在訪問A.com的時候就等於訪問A.com/index.php/
3.3.設置ThinkPHP框架默認訪問的模塊爲Home;
到了這裏,我們要設置默認訪問的模塊了。
參考ThinkPHP提供的官方文檔:http://document.thinkphp.cn/manual_3_2.html#module_deploy
我們在ThinkPHP的convention.conf配置文件中,一般是在下載的ThinkPHP/conf文件夾中,找到如下字段:
'MODULE_DENY_LIST' => array('Common','Runtime'),
這個字段是決定了不能夠從瀏覽器訪問的的模塊的名稱,在下面我們加上允許訪問的模塊的名稱,並設置好默認訪問的模塊名稱:
/*允許訪問的模塊列表*/
'MODULE_ALLOW_LIST' => array('Home','Admin'),
/*綁定默認訪問的模塊*/
'DEFAULT_MODULE' => 'Home',
通過這幾步的設置,我們在訪問A.com的時候等同於訪問的地址是:A.com/index.php/Home/Index/index.html由於ThinkPHP默認的的機制是訪問模塊下的Index控制器的index方法,如果我們需要被訪問的控制是Index,方法是index,那麼只需要設置到這一步即可,如果不是,則建議將需要被訪問的控制器和方法命名爲Index和index,或者,將我們需要被默認訪問的控制器的名稱綁定到上面默認訪問的模塊後,並將方法改成index:
‘DEFAULT_MODULE’ => 'Home/Index'
3.4.檢查配置跳轉鏈接以及各項資源的引用地址正確性:
我們項目中資源的根目錄如果被更改了,那麼需要將所有之前引用的資源(特別是View文件夾下的JS和CS,圖片等)的連接查看一邊,按照實際的情況進行修改,否則會導致網站的樣式,功能,以及內容的損壞。
同樣,特別在一些文件上傳並將鏈接寫入數據庫的位置,要修改提交到數據庫中的連接模板。否則,會造成很大的麻煩。
好了,通過這樣子4步的設置,我們就可以通過A.com來訪問到我們的項目默認訪問的首頁A.com/index.php/Home/Index/index.html。
如果你想在平時的訪問過程中,隱藏掉入口文件index.php。可以參考一下我的這篇文章:
【ThinkPHP學習】 Ubuntu apache2 URL重寫配置過程
最後,做完這一些之後,你需要做的最後一步,也是第5步,是重啓apache服務器:
sudo /etc/init.d/apache2 restart