【问题标题】:URL Rewrite-rule in IIS 8 not triggeringIIS 8 中的 URL 重写规则未触发
【发布时间】:2020-07-03 22:01:52
【问题描述】:

我的 URL 重写有问题,我不知道我做错了什么,也许你可以指出我正确的方向。我们有一个 Intranet 站点,其模式如下:intranet.old-site.com。现在我们有了一个新域,我想将我过时的链接转发到我们新 Intranet 的首页,如下所示:intranet.new-site.com

我在 IIS 中安装了 URL Rewrite 模块,在我看来,设置是正确的:

匹配网址

Request URL: matches pattern.
Using:       Wildcards
Pattern:     *intranet.old-site*
Ignore case: true

条件

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:

网络配置现在看起来像这样:

<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>

我希望将任何网站(基本上类似于 intranet.sgbdd.saint-gobain.com/start.asp?something_more" 的任何网站转发/重定向到 intranet.stark-deutschland.net/start.asp?something_more

例如:

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

我还按照建议添加了条件:

感谢您的意见

【问题讨论】:

  • 当文件版本为6.2时,你使用的是IIS 8,support.microsoft.com/en-ie/help/224609/…你直接打错了1blog.lextudio.com/…
  • @LexLi 好文章。我经历了它,但我似乎无法在这里找到我的错误。我认为它与模式有关,但即使我将其更改为 intranet.old-site.com(没有通配符/正则表达式)它也不起作用。
  • 您没有使用条件来检查主机名。这是最典型的错误。
  • 所以我也添加了两个条件,但仍然没有运气:第一个是输入:{HTTP_HOST} 匹配模式(.*)intranet.old-site(.*),第二个完全相同,但具有完整的地址。还将“逻辑分组”更改为Match any
  • 请记住,其他人无法看到您的屏幕,因此请编辑您的问题以包含全部而不是部分的新信息。还要学习如何自行排除故障,docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/… 那么原因应该很清楚。

标签: iis web-config iis-8


【解决方案1】:

使用两个 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>

我试图将两条规则合并为一条规则,但表达式有问题?!所以建议拆分成两条规则。

如果你的意思是

intranet.sgbdd.saint-gobain.com/start.asp?something_more --> intranet.stark-deutschland.net/start.asp?something_more
somesite.intranet.sgbdd.saint-gobain.com/my/new/site --> somesite.intranet.stark-deutschland.net/my/new/site

那么规则可以是这样的。

<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>

【讨论】:

  • 完美运行!我想我的错误是match url 的事情,我必须指定(.*) 而不是某个路径。谢谢!
猜你喜欢
  • 1970-01-01
  • 2014-10-27
  • 2014-05-01
  • 2011-05-07
  • 2021-08-04
  • 2011-04-21
  • 1970-01-01
相关资源
最近更新 更多