1、URL重寫,隱藏網址中的Index.php。 ThinkPHP 作為 PHP 框架,是單一入口的,那麼其原始的 URL 便不是那麼友好。但 ThinkPHP提供了各種機制來定製需要的 URL 格式,配合 Apache .htaccess 文件,更是可以定製出人性化的更利於 SEO 的URL 地址 ...
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 格式。