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 文件的目錄,將原來的目錄注釋掉:
#<Directory ”C:/Program Files/ApacheGroup/Apache2/htdocs”>
<Directory E:/html/myapp>
更改 AllowOverride None 為 AllowOverride FileInfo Options ,
更改後的配置如下所示:
#<Directory ”C:/Program Files/ApacheGroup/Apache2/htdocs”>
<DirectoryE:/html/myapp>
AllowOverride FileInfoOptions
</Directory>
.htaccess 是基於目錄來控制的,<DirectoryE:/html/myapp> 該句即表示需要讀取 .htaccess 文件的目錄,要根據實際具體Apache 的解析目錄來配置。虛擬主機如果提供 .htaccess 控制,一般都已經配置好了。
三、添加 .htaccess 文件 Rewrite 規則
在需要隱藏 index.php 的目錄下創建 .htaccess文件,並寫入如下規則代碼:
<IfModulemod_rewrite.c>
RewriteEngine on
#不顯示index.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
四、更改項目配置文件
編輯項目配置文件 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下配置文件中加入下面的代碼
//開啟路由器 'URL_MODEL' => 2, 'URL_ROUTER_ON' => true, 'URL_ROUTE_RULES' => array( 'index' => "Home/Index/index", 'test' => "Home/Index/test",
//URL/test.html
'/^C_(\d+)$/' => 'Index/index/user?id=:1'
//短鏈接:http://localhost/index.php/C_9 ),
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 格式。