我正在学习从教程中创建REST api。 在教程中,有一个步骤执行URL重写。代码如下:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ %{ENV:BASE}index.php [QSA,L]
有人可以解释重写条件和%{ENV:BASE}
部分吗?
答案 0 :(得分:2)
条件很简单:
如果请求的URI未指示任何现有文件,则重定向到${ENV:BASE}index.php
。
您可以找到RewriteRule标志here的说明。简而言之:
QSA
代表“查询字符串追加”。这意味着查询字符串将附加到替换URI。
L
表示这是最后一条规则,不会处理其他规则。
在this page上,对htaccess中的环境变量有一个很好的解释:
RewriteCond中的%{ENV:variable}形式的TestString允许mod_rewrite的重写引擎根据环境变量做出决策。请注意,没有ENV:前缀的mod_rewrite中可访问的变量实际上不是环境变量。相反,它们是mod_rewrite特有的变量,无法从其他模块访问。
因此,您可以在规则中使用环境变量,例如${ENV:<name>}
。当然,必须提前设置变量。
答案 1 :(得分:0)
${ENV:<name>}
用于避免重复编码。某些条件将存储为变量,可以在RewriteRules中使用。有关详细信息,请参阅this question。