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

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

WBOY
WBOY原創
2016-10-17 09:11:151331瀏覽

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 檔案的目錄,要根據實際特定Apache 的解析目錄來設定。虛擬主機如果提供 .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下設定檔中加入下面的程式碼

<span style="color: #008000">//</span><span style="color: #008000">开启路由器</span>

 'URL_MODEL' => 2,

 'URL_ROUTER_ON' => <span style="color: #0000ff">true</span>,

 'URL_ROUTE_RULES' =>  <span style="color: #0000ff">array</span><span style="color: #000000">(

  </span>'index' => "Home/Index/index",

  'test'  => "Home/Index/test", <br>  <span style="color: #008000">//</span><span style="color: #008000">URL/test.html<br><br>  '/^C_(\d+)$/' => 'Index/index/user?id=:1'<br>  //短链接:http://localhost/index.php/C_9</span>
<span style="color: #000000">
 )</span>, 

 

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