程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> ThinkPHP的URL重寫+路由+偽靜態,實現SEO效果。,thinkphpseo

ThinkPHP的URL重寫+路由+偽靜態,實現SEO效果。,thinkphpseo

編輯:關於PHP編程

ThinkPHP的URL重寫+路由+偽靜態,實現SEO效果。,thinkphpseo


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 格式。

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