首頁  >  文章  >  php教程  >  ThinkPHP的URL重寫+路由+偽靜態,實現SEO效果。

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

高洛峰
高洛峰原創
2016-10-17 09:37:001899瀏覽

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/Inde /insert

如此一來,就變成了 http://網頁位址/應用模組名稱/操作名稱[/變數參數] 的常見 URL 格式。

更改 Apache httpd.conf 設定檔

一、載入了 mod_rewrite.so

確認載入了 mod_rewrite.so 模組(將以下設定前的  

二,更改 AllowOverride 配置

更改需要讀取 .htaccess 檔案的目錄,將原始的目錄註解掉:

#

如下圖所示:

#

AllowOverride FileInfoOptions

.htaccess 是基於目錄的,虛擬主機如果提供 .htaccess 控制,通常都已經設定好了。

三、新增 .htaccess 文件 Rewrite 規則

三、新增 .htaccess 檔案 Rewrite 規則

三、新增 .htaccess 檔案 Rewrite 規則

三、新增 .htaccess 檔案 Rewrite 規則

三、新增 .htaccess 檔案 Rewrite 規則

三、新增 .htaccess 檔案 Rewrite 規則

至在需要隱藏 index.php 的目錄下方建立 .htaccess文件,並寫入下列規則程式碼:

. RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ .php/$1

編輯專案設定檔 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 格式。



陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn