thinkphp 設定執行目錄為/public後 404錯誤

黄文Rex發表於2024-10-08

當你在 ThinkPHP 中設定了執行目錄為 /public 後,可能會遇到 404 錯誤。這通常是因為 Web 伺服器的配置問題導致的。以下是解決這個問題的幾個步驟:

1. 修改 .htaccess 檔案

如果你使用的是 Apache 伺服器,需要確保 .htaccess 檔案正確配置。在專案根目錄下建立或修改 .htaccess 檔案,內容如下:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /public/

    # 如果請求資源不存在,則交給 index.php 處理
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ ./index.php/$1 [L]
</IfModule>

2. 修改 Nginx 配置檔案

如果你使用的是 Nginx 伺服器,需要修改 Nginx 的配置檔案。在 nginx.conf 或者站點配置檔案中新增或修改以下內容:

server {
    listen 80;
    server_name yourdomain.com;

    root /path/to/your/project/public;  # 指定專案的 public 目錄

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;  # 根據實際 PHP 版本和配置修改
    }
}

3. 修改 ThinkPHP 配置

確保 ThinkPHP 的配置檔案中指定了正確的執行目錄。在 config.php 檔案中新增或修改以下內容:

return [
    // 執行目錄
    'app_dir' => 'public',
    
    // 應用基礎路徑
    'base_path' => __DIR__ . '/../',
    
    // 應用入口檔案
    'entry_file' => 'index.php',
];

4. 重啟 Web 伺服器

  • Apache:重啟 Apache 服務。

    sh
    sudo service apache2 restart
  • Nginx:重啟 Nginx 服務。

    sh
    sudo service nginx restart

5. 測試訪問

  • 在瀏覽器中訪問你的網站,確保所有配置生效並且沒有 404 錯誤。

總結

透過以上步驟,你可以解決 ThinkPHP 設定執行目錄為 /public 後出現的 404 錯誤。確保 Web 伺服器的配置正確,並且 ThinkPHP 的配置檔案也進行了相應的修改。這樣可以確保應用能夠正常執行。

相關文章