IIS 8中的URL重写规则未触发
我的URL重写有问题,我不知道我做错了什么,所以,也许你可以给我指出正确的方向。我们有一个intranet站点,其模式如下:IIS 8中的URL重写规则未触发,iis,web-config,iis-8,Iis,Web Config,Iis 8,我的URL重写有问题,我不知道我做错了什么,所以,也许你可以给我指出正确的方向。我们有一个intranet站点,其模式如下:intranet.old site.com。现在我们有了一个新域名,我想把我过时的链接转发到我们新内联网的首页,它看起来像:intranet.new site.com 我在IIS中安装了URL重写模块,在我看来,设置是正确的: 匹配URL Request URL: matches pattern. Using: Wildcards Pattern: *i
intranet.old site.com
。现在我们有了一个新域名,我想把我过时的链接转发到我们新内联网的首页,它看起来像:intranet.new site.com
我在IIS中安装了URL重写模块,在我看来,设置是正确的:
匹配URL
Request URL: matches pattern.
Using: Wildcards
Pattern: *intranet.old-site*
Ignore case: true
条件
none
none
服务器变量
none
none
行动
Action Type: Rewrite
Action Properties: Rewrite-URL: http://intranet.new-site.com/
Append query string: true
Log rewritten URL: false
Stop processing of subsequent rules: false
我也很乐意知道什么是可行的,所以如果有关于web.config
的规则,我也可以试试
更新1:
web配置现在如下所示:
<rewrite>
<rules>
<rule name="RewriteSG2DE" patternSyntax="ECMAScript" stopProcessing="true">
<match url="(.*).sgbdd.saint-gobain(.*)" />
<action type="Redirect" url="intranet.stark-deutschland.net" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="(.*)sgbdd.saint-gobain(.*)" />
<add input="{HTTP_HOST}" pattern="intranet.sgbdd.saint-gobain.com" />
</conditions>
</rule>
</rules>
</rewrite>
我还添加了建议的条件:
感谢您使用两个URL重写规则输入,这样做更容易处理。 如果你想重定向
intranet.sgbdd.saint-gobain.com/start.asp?something_more --> intranet.stark-deutschland.net/start.asp?something_more
somesite.intranet.saint-gobain.com/my/new/site --> somesite.intranet.stark-deutschland.net/my/new/site
那么规则可以是这样的
<rule name="rule1" stopProcessing="true">
<match url="(.*)" />
<conditions trackAllCaptures="true">
<add input="{HTTP_HOST}" pattern="^(.*)saint-gobain.com$" />
<add input="{HTTP_HOST}" pattern="intranet.sgbdd.saint-gobain.com" negate="true" />
</conditions>
<action type="Redirect" url="http://{C:1}stark-deutschland.net/{R:1}" redirectType="Temporary" />
</rule>
<rule name="rule2" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^intranet.sgbdd.saint-gobain.com$" />
</conditions>
<action type="Redirect" url="http://intranet.stark-deutschland.net/{R:1}" redirectType="Temporary" />
</rule>
<rule name="RewriteSG2DE" patternSyntax="ECMAScript" stopProcessing="true">
<match url="(.*)" />
<action type="Redirect" url="http://{C:1}stark-deutschland.net/{R:1}" redirectType="Temporary" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="(.*)sgbdd.saint-gobain.com" />
</conditions>
</rule>
那么规则可以是这样的
<rule name="rule1" stopProcessing="true">
<match url="(.*)" />
<conditions trackAllCaptures="true">
<add input="{HTTP_HOST}" pattern="^(.*)saint-gobain.com$" />
<add input="{HTTP_HOST}" pattern="intranet.sgbdd.saint-gobain.com" negate="true" />
</conditions>
<action type="Redirect" url="http://{C:1}stark-deutschland.net/{R:1}" redirectType="Temporary" />
</rule>
<rule name="rule2" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^intranet.sgbdd.saint-gobain.com$" />
</conditions>
<action type="Redirect" url="http://intranet.stark-deutschland.net/{R:1}" redirectType="Temporary" />
</rule>
<rule name="RewriteSG2DE" patternSyntax="ECMAScript" stopProcessing="true">
<match url="(.*)" />
<action type="Redirect" url="http://{C:1}stark-deutschland.net/{R:1}" redirectType="Temporary" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="(.*)sgbdd.saint-gobain.com" />
</conditions>
</rule>
当文件版本为6.2时,您使用的是IIS 8,只需点击错误1@LexLi nice article即可。我看了一遍,但我似乎在这里找不到我的错误。我假设它与模式有关,但即使我将其更改为intranet.old site.com
(不带通配符/regex),它也不起作用。您没有使用条件检查主机名。这是最典型的错误。因此,我也添加了两个条件,但仍然不走运:第一个条件正在输入:{HTTP_HOST}
匹配模式(*)intranet.old site(.*)
,第二个条件完全相同,但具有完整的地址。还将“逻辑分组”更改为匹配任何
请记住,其他人看不到您的屏幕,因此请编辑您的问题,将新信息全部包括在内,而不是部分。还要学习如何自己排除故障,那么原因应该是清楚的。工作完美!我想我的错误是匹配url
的事情,我必须指定(.*)
而不是特定的路径。非常感谢。