我正在學習從教程創建REST api。 在教程中,有一個步驟可以執行URL重寫。代碼如下:在htaccess重寫條件和變量說明中的URL重寫
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ %{ENV:BASE}index.php [QSA,L]
可有人請解釋改寫條件和它%{ENV:BASE}
一部分?
我正在學習從教程創建REST api。 在教程中,有一個步驟可以執行URL重寫。代碼如下:在htaccess重寫條件和變量說明中的URL重寫
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ %{ENV:BASE}index.php [QSA,L]
可有人請解釋改寫條件和它%{ENV:BASE}
一部分?
的條件很簡單:
如果請求的URI不表示任何現有的文件,然後重定向到${ENV:BASE}index.php
。
您可以找到RewriteRule標誌here的說明。簡而言之:
QSA
代表「query string append」。這意味着查詢字符串將被添加到替換URI。
L
表示這是最後一條規則,不會處理更多規則。
在this page有htaccess的環境變量的一個很好的解釋:
的%{ENV:變量}形式的TestString中的RewriteCond允許的mod_rewrite的重寫引擎,使在環境變量有條件的決定。請注意,在不帶ENV:前綴的mod_rewrite中可訪問的變量實際上不是環境變量。相反,它們是mod_rewrite特有的變量,不能從其他模塊訪問。
所以,你可以在你的規則中使用環境變量,如${ENV:<name>}
。當然,變量必須設置得更早。
${ENV:<name>}
用於避免重複編碼。一些條件將被存儲爲變量,並可以在RewriteRules中使用。欲瞭解更多詳情,你可以看到this question。
'%{ENV:BASE}'將由其中一個規則本身定義。 – anubhava