1、URL重寫,隱藏網址中的Index.php。
ThinkPHP 作為 PHP 框架,且是單一入口的,那麼其原始的 URL 則不是那麼友善。但 ThinkPHP提供了各種機制來客製化需求的 URL 格式,並配合 Apache .htaccess 文件,更是可自訂出人性化的更有利於 SEO 的URL 位址來。
.htaccess檔案是 Apache 伺服器中的一個設定文件,它負責相關目錄下的網頁設定。我們可以利用 .htaccess 檔案的Rewrite 規則來隱藏掉 ThinkPHP URL 中的 index.php 檔案(即入口檔案),這也是 ThinkPHP URL偽靜態的第一步。
例如原來的 URL 為:
http://www.baidu.com/index.php/Index/insert
去掉 index.php 之後變成:
http://www.baidu.com/Index/insert
如此一來,就變成了 http://網頁位址/應用模組名稱/操作名稱[/變數參數] 的常見 URL 格式。
更改 Apache httpd.conf 設定檔
一、載了 mod_rewrite.so
確認載入了 mod_rewrite.so 模組(將如下配置前的 # 號去掉):
LoadModule rewrite_module modules/mod_rewrite.so
二、變更 AllowOverride 設定
更改需要讀取 .htaccess 檔案的目錄,將原來的目錄註解掉:
#
更改 AllowOverride None 為 AllowOverride FileInfo Options ,
更改後的配置如下圖所示:
#
AllowOverride FileInfoOptions
.htaccess 是基於目錄來控制的,
三、新增 .htaccess 檔案 Rewrite 規則
在需要隱藏 index.php 的目錄下建立 .htaccess文件,並寫入下列規則碼:
RewriteEngine on
#不顯示index.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
四、更改專案設定檔
編輯專案設定檔 Conf/config.php ,將 URL 模式設定為 2(Rewrite模式):
‘URL_MODEL’=>2,
至此,各配置已經完成。儲存各設定檔後,重新啟動 Apache 伺服器並刪除 Runtime 目錄下的專案快取文件,瀏覽器存取隱藏index.php 後的位址測試是否成功:
http://www.baidu.com/html/myapp/Index/index
如果存取成功,那麼利用 Apache .htaccess 檔案的 Rewrite 規則隱藏 index.php入口檔案的設定就成功了。
2.配置路由,縮短網址的長度。
在common下設定檔中加入下面的程式碼
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
3、偽靜態,給網址加上後綴.html
ThinkPHP 支援偽靜態 URL 設置,可以設定所需的 URL 後綴。編輯專案設定檔Conf/config.php ,將
URL_HTML_SUFFIX 參數設定如下:
'URL_HTML_SUFFIX' => '.html',
刪除 Runtime 目錄下的專案快取檔案使設定生效後,在瀏覽器存取位址效果相同:
http://127.0.0.1/html/myapp/index.php/Index/index
http://127.0.0.1/html/myapp/index.php/Index/index.shtml
在參數配置中,也可以配置其他任何需要的後綴,注意後綴設定中包括. 符號。
設定了偽靜態後,為了保持各處 URL 一致,建議使用 U 方法在模板裡面自動產生 URL,具體請參閱《ThinkPHP U方法自動產生URL》。
提示:
ThinkPHP 偽靜態有一個讓人容易誤解的地方:以為配置好偽靜態之後,系統會自動產生如 xxx.html這類的網址。實際情況不是這樣的,而是如上文所說,配置偽靜態之後,是否有 .html 這類後綴跟無後綴的 URL存取效果是一樣的。因此,如果使用偽靜態,只能手動新增靜態後綴或使用 ThinkPHP U方法 自動產生帶有後綴的 URL 位址。在此,當然推薦使用 U方法 來自動產生具有偽靜態位址的 URL 格式。