2014-04-19 77 views
3

我正在學習從教程創建REST api。 在教程中,有一個步驟可以執行URL重寫。代碼如下:在htaccess重寫條件和變量說明中的URL重寫

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ %{ENV:BASE}index.php [QSA,L] 

可有人請解釋改寫條件和它%{ENV:BASE}一部分?

+0

'%{ENV:BASE}'將由其中一個規則本身定義。 – anubhava

回答

2

的條件很簡單:

如果請求的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>}。當然,變量必須設置得更早。

0

${ENV:<name>}用於避免重複編碼。一些條件將被存儲爲變量,並可以在RewriteRules中使用。欲瞭解更多詳情,你可以看到this question