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

来源:http://www.cnblogs.com/tpshop/archive/2016/10/16/5967866.html
-Advertisement-
Play Games

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ...
  • Python3 數字(Number) 定義:a=1 特性: 1.只能存放一個值 2.一經定義,不可更改 3.直接訪問 分類:整型,長整型,布爾,浮點,複數 python2.*與python3.*關於整型的區別 Python 數字數據類型用於存儲數值。 數據類型是不允許改變的,這就意味著如果改變數字數 ...
  • 隨筆簡介 spring版本:4.3.2.RELEASE+spring security 版本:4.1.2.RELEASE(其它不做說明) 所展示內容全部用註解配置 springmvc已經配置好,不作說明 會涉及到springmvc,spel,el的東西,不熟悉的同學可以先去看一下這方面內容,特別是s ...
  • 1.簡介 通常在R中從來進行分析和展現的數據都是以基本的格式保存的,如.csv或者.Rdata,然後使用.Rmd文件來進行分析的呈現。通過這個方式,分析師不僅可以呈現他們的統計分析的結果,還可以直接生成pdf和html文件,節省了大量的時間。但是,當你想要給其他人參閱你的文檔的時候,你就需要編譯.R ...
  • 、 十月 16, 2016 11:11:12 下午 org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>INFO: HCANN000001: Hibernate Commons Annotati ...
  • 歡迎探討,如有錯誤敬請指正 如需轉載,請註明出處http://www.cnblogs.com/nullzx/ 1. 歸併排序演算法的使用情景 歸併排序演算法和快速排序演算法是java.util.Arrays中使用的排序算。對於一般的基本數據類型,Arrays.sort函數使用雙軸快速排序演算法,而對於對象類... ...
  • Collection類的層次結構圖(來源與網路)如下所示: Collection層次結構中的根介面。Collection 表示一組對象,這些對象也稱為 collection 的元素。一些 collection 允許有重覆的元素(如List,Queue),而另一些則不允許(如Set)。一些 colle ...
  • 按鈕圖形化,只需創建一個ImageIcon對象,將圖形路徑賦予ImageIcon對象,然後將該對象傳遞給按鈕即可。在此過程中涉及eclipse中圖形的路徑設置,包括(項目路徑下、非項目路徑下、相對路徑、絕對路徑),相對路徑前不加/,此處相對路徑是相對於eclipse中項目文件夾而言的,絕對路徑為圖形... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...