gpt4 book ai didi

url - 在 IIS 7.5 中重写服务器变量

转载 作者:行者123 更新时间:2023-12-04 17:12:06 27 4
gpt4 key购买 nike

我有一个重写规则,它使用子域的值更改服务器变量。
这适用于 subdomain.mydomain.nl/somethinghere 但不适用于 subdomain.mydomain.nl

<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:子域.mydomain.nl

我使用以下代码在 PHP 中检索变量:
echo $_SERVER['MYVARIABLE'];

在 URL 1 的情况下,它的输出是“子域”。

在 URL 2 的情况下,它的输出是“”。

URL 1 的输出是正确的,但 URL 2 的输出也应该是“子域”。

我对这两个请求进行了跟踪,它们都显示规则正在匹配和执行。

谁能帮我?

最佳答案

设置自定义服务器变量时,应以 HTTP_ 开头。 .当您添加自己的标题时,它应该以 HTTP_X_ 开头。添加以 X 开头的主机头。

老实说,如果没有 HTTP_,我真的无法解释为什么它会起作用。在某些情况下,但使用 HTTP_它适用于所有场景,这也是它的记录方式。

<rules>
<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+)\.testsite\.nl" />
<add input="{SERVER_NAME}" pattern="^www\.testsite\.nl$" negate="true" />
<add input="{SERVER_NAME}" pattern="^testsite\.nl$" negate="true" />
</conditions>
<serverVariables>
<set name="HTTP_X_MYVARIABLE" value="{C:2}" />
</serverVariables>
<action type="None" />
</rule>
</rules>

您现在可以使用 echo $_SERVER["HTTP_X_MYVARIABLE"]; 获取子域名.

我还清理了您的条件正则表达式以逃避 . s 并添加了 $使其真正匹配准确的域名。

关于url - 在 IIS 7.5 中重写服务器变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8310101/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com