我的文件中有以下內容.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 檔案的公共資料夾)位於專案資料夾內。