重定向到我的 Laravel 專案資料夾

重定向到我的 Laravel 專案資料夾

我的文件中有以下內容.htaccess。我希望它重定向到我的專案資料夾/hc,該資料夾與.htaccess.重定向沒有發生,它仍然顯示 的內容index.html

RewriteEngine On

RewriteBase /hc/

<Files .*>
    Order Deny,Allow
    Deny From All
</Files>

RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?/$0 [PT,L,QSA]

答案1

我希望它重定向到我的專案資料/hc.htaccess

那就是問題所在。如果.htaccess檔案位於/hc子目錄中,那麼它永遠不會看到該請求,除非您已經/hc在請求中包含該子目錄。

您的.htaccess檔案需要進入父目錄。 IE。文檔根目錄。 (順便說一句,RewriteBase /hc/如果該文件位於文檔根目錄中,則只需要該指令。)

或者,包括一個額外的 .htaccess文檔根目錄中的文件,只需將所有請求轉發到您的/hc目錄(您的前端控制器),例如:

RewriteEngine On
RewriteRule (.*) hc/$1 [L]

請注意,由於預設不會繼承 mod_rewrite,因此一旦請求被重寫到子目錄/hc.htaccess子目錄中的檔案就會被處理並覆寫父檔案中的 mod_rewrite 指令.htaccess,因此不會出現重寫迴圈。


RewriteRule .* index.php?/$0 [PT,L,QSA]

更新:你的代換最後的字串RewriteRule與先前的指令不同。兩者可能都不正確。您可能想要刪除?上面指令中的 ,除非您打算使用查詢字串,否則您應該將 a 新增?到先前的指令中。就目前情況而言,第一個使用路徑資訊為了傳遞 URL,第二個使用請求參數

順便說一句,該PT標誌在每個目錄.htaccess檔案中是多餘的。如果您不使用查詢字串,則QSA也可以刪除該標誌。

答案2

您需要在“sites-available”apache 設定檔中啟用“rewrite”選項。對於 laravel 你應該小心,因為你的 DocumentRoot (你需要 .htaccess 檔案的公共資料夾)位於專案資料夾內。

相關內容