【问题标题】:IIS redirect maps not working for root destinationIIS 重定向映射不适用于根目标
【发布时间】:2020-12-25 10:22:09
【问题描述】:

当我将目标指向根目录时,我无法让重写过程正常工作。

如果我指向 /page/ 目标 t 似乎可以正常工作,但如果我指向 / 它就不行。以下是我的 web.config 中的内容

    <rewrite>
    <rewriteMaps>
        <rewriteMap name="StaticRewrites">
            <add key="/1" value="/article.aspx?id=1&amp;title=some-title" />
            <add key="/random_page.htm" value="/" />
            <add key="/friends.htm" value="index.php" />
            <add key="/page_2.htm" value="/index.php" />
            <add key="/some_other_page.htm" value="/some_other_page/" />
            <add key="/some_page_test.htm" value="/test21.php" />
            <add key="/2nd_page_test.htm" value="/test.txt" />
            <add key="/3rd_page_test" value="/test1.htm" />
            <add key="/4th_page_test.htm" value="article.aspx?id=1&amp;title=some-title" />
            <add key="/root_page_again.htm" value="/" />
        </rewriteMap>
</rewriteMaps>
<rules>     
    <rule name="Rewrite rule1 for StaticRewrites">
            <match url="(.*)" />
            <conditions>
                <add input="{StaticRewrites:{REQUEST_URI}}" pattern="(.+)" />
            </conditions>
            <action type="Rewrite" url="{C:1}" appendQueryString="false" />
    </rule>
    <rule name="WordPress: http://123.123.12.123" patternSyntax="Wildcard">
        <match url="*" />
        <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        </conditions>
            <action type="Rewrite" url="index.php/{R:0}" />
    </rule>     
</rules>
</rewrite>

第一个作品
第二、第三、第四行不行
第 5、6、7、8 和 9 个确实有效
第 10 个或最后一个没有

我已经编辑了一些明显的隐私点 IIS 8.5

【问题讨论】:

标签: redirect iis-8 http-redirect iis-8.5 iis-modules


【解决方案1】:

第一个有效,因为它符合第一个规则。

第二个不起作用,因为您没有设置默认文档。它符合第一条规则,如果你设置了默认文档,它将重写为 http://localhost:xx/ 并显示默认文档。

第 3 条和第 4 条匹配第 1 条规则,都重写为 http://localhsot:xx/index.php

第 5、6、7、8 条都匹配第 1 条和第 2 条规则,但重写为 http://localhsot:xx/index.php//“value”并显示 index.php。

第 9 条匹配第 1 条规则并重写为 http://localhsot:xx/article.aspx?id=1&title=some-title。

第 10 次与第 2 次相同。

您可以打开失败请求跟踪,它将记录整个重写过程,包括是否符合规则以及是否重写。

【讨论】:

    【解决方案2】:

    抱歉,我没有发布配置文件的开头。我假设每个人都会理解默认文档已设置,因为没有它整个网站都不会加载。

    这是我之前没有发布的 web.config 的开头部分

        <configuration>
      <system.webServer>
        <defaultDocument>
          <files>
            <add value="index.php" />
          </files>
        </defaultDocument>
        <rewrite>
        <rewriteMap name="StaticRewrites">
    

    感谢您在这件事上的任何帮助,并且知道我一定遗漏了一些简单的东西,因为大多数规则实际上都有效

    【讨论】:

    • 我将在第二天左右设置跟踪,看看是否有助于我了解失败的地方
    • 您的问题解决了吗?如果已解决,请标记正确答案。这将帮助其他可能遇到类似问题的人。
    • 您能告诉我您的失败请求跟踪,以便我找到问题吗?另外请告诉我哪个规则不起作用。
    • 我实际上只是修复了这个问题,没有做太多改动。一旦我将操作从重写更改为重定向,需要指向根目录的页面现在都可以正常工作。我认为任何指向 root 或 index.php 的页面都不起作用但任何指向除 index 或 root 以外的任何页面的任何页面都可以正常工作,无论扩展名是什么,我认为这很奇怪。但是有了重定向,它们现在都可以正常工作了。至于追踪报告的内容。
    • 只有在跟踪报告中才能详细看到重写过程中哪些规则匹配哪些不匹配,初始URL是什么,重写成功后是什么。
    猜你喜欢
    • 2015-09-11
    • 1970-01-01
    • 2017-12-07
    • 2014-01-30
    • 1970-01-01
    • 2014-11-08
    • 2021-04-13
    • 2020-11-20
    • 1970-01-01
    相关资源
    最近更新 更多