我有一个重写规则,它使用子域的值更改服务器变量。 这部作品subdomain.mydomain.nl/somethinghere但不能在subdomain.mydomain.nl在IIS 7.5中重写服务器变量
<rule name="Change code" enabled="true" patternSyntax="ECMAScript" stopProcessing="false">
<match url=".*" ignoreCase="true" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="true">
<add input="{SERVER_NAME}" pattern="(www\.)?(\w+)\.mydomain\.nl" />
<add input="{SERVER_NAME}" pattern="^www.mydomain.nl.*" negate="true" />
<add input="{SERVER_NAME}" pattern="^mydomain.nl.*" negate="true" />
</conditions>
<serverVariables>
<set name="MYVARIABLE" value="{C:2}" />
</serverVariables>
<action type="None" />
</rule>
我已经测试了2个网址: 1:subdomain.mydomain.nl/somethinghere 2:subdomain.mydomain.nl
我检索PHP可变用下面的代码:
echo $_SERVER['MYVARIABLE'];
在URL 1的情况下,这样做的输出被“子域”。
在URL 2的情况下,这样做的输出为“”。
URL 1的输出是正确的,但URL 2的输出应该是“子域”了。
我已经运行两个请求的痕迹,他们都表明,规则被匹配和执行。
任何人都可以帮助我吗?
非常感谢您的回答,这就是解决方案。真奇怪,我无法找到任何记录。 – user1071188
要设置请求标头,需要添加HTTP_。这是记录[这里](http://learn.iis.net/page.aspx/665/url-rewrite-module-20-configuration-reference/#Setting_Server_Variables)(请参阅“关于请求标题的注意事项”)。然而,我也困惑的是为什么设置请求标题总是有效,但设置服务器变量似乎并不总能奏效。 –
谢谢你。你救了我的命! –