首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

ThinkPHP 多 URL 訪問同一頁面:URL Rewrite 內部跳轉非重定向

     編輯:程式設計綜合問答

CSDN 文章詳情頁 /questions/229561、/questions/229561.htm、/questions/229561/ 三種 URL 均可訪問且地址欄不變,實為服務端內部重寫(URL Rewrite),非 301/302 重定向。

原理

  • 用戶請任一 URL → Nginx/Apache Rewrite 規則統一映射到 /index.php?s=questions/229561(ThinkPHP 入口)。
  • PHP 邏輯層解析路由參數 id=229561,渲染同一視圖。
  • 瀏覽器地址欄保持原 URL,搜索引擎抓取見到多個 URL 指向相同內容(需加 canonical 標簽避免重複收錄)。

Nginx 配置示例

location / {
    if (!-e $request_filename) {
        rewrite ^/questions/(\d+)(\.htm)?/?$ /index.php?s=questions/$1 last;
        rewrite ^/questions/(\d+)/?$ /index.php?s=questions/$1 last;
    }
}

ThinkPHP 路由配置

'questions/:id' => 'Question/detail',
'questions/:id.htm' => 'Question/detail',
'questions/:id/' => 'Question/detail',

SEO 注意

  • 在頁面 `` 加入 `` 指定首選 URL。
  • Sitemap 僅提交首選 URL。
  • 避免在頁面內產生指向非首選 URL 的鏈接。

結論:Rewrite 實現多入口單內容,Canonical 統一權重,這是成熟站點標準做法。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved