首頁  >  文章  >  後端開發  >  如何在共享主機的子目錄中託管 Laravel 專案而不在 URL 中暴露“/public”

如何在共享主機的子目錄中託管 Laravel 專案而不在 URL 中暴露“/public”

Barbara Streisand
Barbara Streisand原創
2024-11-07 20:07:03996瀏覽

How to Host a Laravel Project in a Subdirectory on Shared Hosting without Exposing `/public` in the URL

在共享主機上託管 Laravel 專案時,一個常見的挑戰是確保 URL 不需要 /public 目錄。這是在子目錄中託管 Laravel 應用程式同時保持 URL 乾淨的逐步指南。

第 1 步:將 Laravel 專案上傳到伺服器

  1. 登入您的主機帳戶並存取您的檔案總管。
  2. 導覽至 public_html 資料夾或您網站的主目錄。
  3. 為您的 Laravel 專案建立一個新資料夾(子目錄)。在此範例中,我們將其命名為 hookbox-api。
  4. 將整個 Laravel 專案上傳到 hookbox-api 資料夾。

步驟2:將index.php移到子目錄的根目錄

  1. 開啟 hookbox-api/public 資料夾。
  2. 將index.php檔案從public複製(或移動)到hookbox-api的根目錄。
  3. 開啟hookbox-api根目錄中複製的index.php檔案並更新檔案路徑,如下所示:
   require __DIR__.'/vendor/autoload.php';
   $app = require_once __DIR__.'/bootstrap/app.php';

這告訴 Laravel 在專案的根目錄而不是公共目錄中尋找必要的檔案。

步驟 3:將 .htaccess 檔案移到子目錄的根目錄

  1. 接下來,將 .htaccess 檔案從 public 資料夾移至 hookbox-api 的根目錄。
  2. 將此 .htaccess 檔案的內容替換為以下內容:
   RewriteEngine On

   # Force HTTPS
   RewriteCond %{HTTPS} off
   RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

   # Redirect all requests to index.php
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule ^ index.php [L]

此程式碼確保所有傳入請求都定向到 hookbox-api 資料夾中的index.php。如果您的網站啟用了 SSL,它也會強制使用 HTTPS。

步驟 4:清除 Laravel 的快取(可選但建議)

如果您有 SSH 存取權限,在任何部署變更後清除快取的配置和路由始終是一個好習慣。執行這些命令以確保不存在快取的配置衝突:

php artisan route:cache
php artisan config:cache
php artisan cache:clear

第 5 步:測試您的設置

現在,您應該能夠在瀏覽器中訪問您的 Laravel 應用程序,而無需在 URL 中添加 /public 。試試造訪以下路線:

https://www.yourdomain.com/hookbox-api/api/your-route

如果設定成功,載入應該不會出現任何錯誤。

結論

透過將 index.php 和 .htaccess 移到子目錄的根目錄並更新檔案路徑,您已經有效地將 Laravel 配置為在不暴露 URL 中的 /public 目錄的情況下運行。此方法在使用共用主機時非常有用,因為它可以保持更清晰、更專業的 URL 結構。

以上是如何在共享主機的子目錄中託管 Laravel 專案而不在 URL 中暴露“/public”的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn