HTTP_URL,REQUEST_URI和这些其他IIS变量之间的区别是什么?

时间:2018-01-03 11:51:03

标签: iis iis-7 iis-7.5 iis-6 url-rewrite-module

我遇到了各种<rewrite>规则,并注意到有很多变量似乎是相同的。 IIS Server Variables documentation并没有真正帮助,例如它没有解释PATH_INFOURL之间的任何差异,它甚至没有提及REQUEST_URI等等。

{HTTP_URL}      = /path/to/file.ext?key=value
{PATH_INFO}     = /path/to/file.ext
{R:1}           = /path/to/file.ext
{REQUEST_URI}   = /path/to/file.ext?key=value
{UNENCODED_URL} = /path/to/file.ext?key=value
{URL}           = /path/to/file.ext
{URL_PATH_INFO} = /path/to/file.ext

除了查询字符串之外,到目前为止我还没有找到任何其他差异。是否存在其他差异,为什么我们有多个具有相同值的变量?

1 个答案:

答案 0 :(得分:2)

我无法完全回答你的问题(因为文档不清楚),我对此做了一些研究。以下是我对一些变量的发现:

<强> {REQUEST_URI}

返回您请求的确切网址。例如,如果您在根目录中有default.aspx文件,则您将访问您的网站根目录。然后:

{REQUEST_URI}是“”

{PATH_INFO},{HTTP_URL},{UNENCODED_URL}是“/default.aspx”

<强> {R:1}

返回正则表达式中的第一个匹配项。例如,如果匹配正则表达式为part(.*)part(.*)part(.*),则您将访问网址/partApartBpartC。然后:

{R:0}是“partApartBpartC”

{R:1}是“A”

{R:2}是“B”

{R:3}是“C”

<强> {UNENCODED_URL}

返回原始的未编码的URL。例如,如果您将访问/"asdasd"""""asdsa那么:

{REQUEST_URI}是/"asdasd"""""asdsa

{UNENCODED_URL}是/%22asdasd%22%22%22%22%22asdsa