HTTP_URL、REQUEST_URI 和这些其他 IIS 变量之间有什么区别?

Rud*_*dey 4 iis iis-7 iis-6 iis-7.5 url-rewrite-module

我遇到了各种<rewrite>规则,并注意到有很多变量似乎是相同的。在IIS服务器变量的文件是不是真的帮助,例如它没有解释什么区别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
Run Code Online (Sandbox Code Playgroud)

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

Vic*_*yev 6

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

{REQUEST_URI}

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

{REQUEST_URI} 是“”

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

{R:1}

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

{R:0} 是“partApartBpartC”

{R:1} 是“A”

{R:2} 是“B”

{R:3} 是“C”

{UNENCODED_URL}

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

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

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