我的檔案根目錄是/var/www/html/.
我在里面創建了一個名為 myapi 的目錄/var/www/html/myapi。
中的檔案夾結構/var/www/html/myapi就像
.
|-- .htaccess
|-- composer.json
|-- composer.lock
|-- src
| |-- config
| |-- index.php
`-- vendor
我希望所有請求http:localhost/myapi/books都被重定向到 src 檔案夾中的 index.php 。
我目前的.htaccess設定:
RewriteEngine On
RewriteCond %{REQUEST_URI} !(\.png|\.jpg|\.gif|\.jpeg|\.zip|\.css|\.svg|\.js)$
RewriteRule (.*) src/index.php [QSA,L]
RewriteEngine 已經打開。但它不起作用,服務器沒有回應。
我可以知道怎么做嗎?
編輯:已修復。我弄亂了 docker 容器中 .htaccess 檔案的一些卷掛載。
uj5u.com熱心網友回復:
RewriteCond %{REQUEST_URI} !(\.png|\.jpg|\.gif|\.jpeg|\.zip|\.css|\.svg|\.js)$ RewriteRule (.*) src/index.php [QSA,L]...我可以知道如何改進我的 .htaccess 嗎?
正如我在評論中提到的,這是“好的”,但可以改進。
此規則不必要地對其自身進行了重寫。這里沒有重寫回圈,因為您正在重寫靜態檔案路徑。(但是在替換字串上包含一個斜杠前綴,你會得到一個重寫回圈 - 500 內部服務器錯誤。)
無需捕獲整個 URL 路徑(即。(.*)),因為它沒有被使用。
檢查請求不以已知檔案擴展名結尾的條件可以移到RewriteRule 模式中。(該RewriteCond指令不是必需的。)從正則運算式替換中洗掉點以“簡化”正則運算式。考慮添加.php到已知檔案擴展名串列中,和/或使用END標志 (Apache 2.4) 而不是L防止重寫引擎進一步回圈。
該QSA標志不是必需的,因為您沒有在替換字串上附加查詢字串。查詢字串默認通過。
例如,改用以下內容:
RewriteRule !\.(png|jpe?g|gif|zip|css|svg|js)$ src/index.php [END]
uj5u.com熱心網友回復:
在 .htaccess 中使用以下代碼。我希望它應該作業
RewriteEngine On
RewriteCond %{REQUEST_URI} !(\.png|\.jpg|\.gif|\.jpeg|\.zip|\.css|\.svg|\.js)$
RewriteRule (.*) src/index.php?page=$1 [QSA,L]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/456596.html
