首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

ThinkPHP 專案移除 URL 中 index.php 的 Apache/Nginx 配置指南

     編輯:PHP 相關知識

為什麼要移除 index.php

預設 ThinkPHP URL 格式為 https://domain.com/index.php/模組/控制器/方法,既不美觀也不利 SEO。啟用 URL 重寫後可簡化為 https://domain.com/模組/控制器/方法,提升專業度與使用者信任感。

Apache 環境配置步驟

1. 啟用 mod_rewrite 模組

編輯 httpd.conf,找到並取消註解:

LoadModule rewrite_module modules/mod_rewrite.so

重啟 Apache 生效。

2. 允許 .htaccess 覆寫

在對應的 <Directory> 區塊將 AllowOverride None 改為 All:

<Directory "/var/www/html">
    AllowOverride All
    Require all granted
</Directory>

3. 專案根目錄建立 .htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
  • !-d:非目錄
  • !-f:非檔案
  • QSA:附加原查詢字串
  • PT:傳遞給下一個處理器
  • L:最後一條規則

4. ThinkPHP 設定 URL 模式

在 config/app.php 或模組設定檔:

<?php
return [
    'url_route_on'   => true,
    'url_model'      => 2, // PATHINFO 模式
    'url_html_suffix' => '', // 移除 .html 後綴
];
?>

Nginx 環境配置(現代主流選擇)

在 server 區塊加入:

location / {
    if (!-e $request_filename) {
        rewrite ^/(.*)$ /index.php/$1 last;
        break;
    }
}

或更標準的 try_files 寫法:

location / {
    try_files $uri $uri/ /index.php$is_args$args;
}

Windows 環境建立 .htaccess 技巧

資源管理器無法直接建立以點開頭的檔案,解決方法:

  1. 新建文字檔 htaccess.txt
  2. 編輯內容後,開啟 CMD:rename htaccess.txt .htaccess
  3. 或使用編輯器(VS Code、Notepad++、PhpStorm)直接另存新檔為 .htaccess

常見問題排查

現象可能原因解決方向
404 Not Foundmod_rewrite 未啟用或 AllowOverride 設定錯誤檢查 httpd.conf、error_log
無限重導向RewriteRule 規則匹配到自身確認 !-f !-d 條件、避免重寫靜態資源
CSS/JS/圖片失效相對路徑基準改變使用絕對路徑或 <base> 標籤
參數無法獲取QSA 旗標遺漏加上 [QSA,PT,L]

總結

移除 index.php 需「Web Server 重寫規則」+「框架 URL 模式設定」雙管齊下。Apache 靠 .htaccess,Nginx 靠 try_files,原理相同:將不存在的靜態資源請求轉發給 index.php 處理。完成配置後,記得清除瀏覽器快取與框架快取(php think clear)驗證成果。

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