htaccess重写条件和变量解释中的URL重写

时间:2014-04-19 18:13:45

标签: .htaccess

我正在学习从教程中创建REST api。 在教程中,有一个步骤执行URL重写。代码如下:

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

有人可以解释重写条件和%{ENV:BASE}部分吗?

2 个答案:

答案 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