【问题标题】:IIS UrlRewrite is not working for IIS 8IIS UrlRewrite 不适用于 IIS 8
【发布时间】:2013-01-14 11:14:57
【问题描述】:

我刚刚将我的网站从具有 IIS 7.5 的一台使用 IIS 8 的新计算机移到了。除了 URL 重写之外,所有的都运行良好。没有比我得到的"HTTP Error 404.0 - Not Found" 更多的错误消息。我只认识到,在网站>模块设置页面中有一个类似RewriteModule (%SystemRoot%\system32\inetsrv\rewrite.dll) 的条目,但是,IIS 8 没有相同的模块。即使我在 IIS 8 中添加了相同的模块,它也没有用。如果我能对如何解决问题提出一些建议,我会很高兴。可根据要求提供更多信息..

希望我能正确表达我的意思。!

提前致谢,

阿尔珀

ps:url 规则运行良好..

【问题讨论】:

    标签: url-rewriting web-config iis-8


    【解决方案1】:

    你可以试试这个方法。谷歌搜索一下,你不是唯一一个遇到这个问题的人 --> http://forums.iis.net/t/1173537.aspx/1

    【讨论】:

    • 首先感谢您的尝试,但看起来这是一个不同的问题。我确定两台机器中都存在 C:\Windows\System32\inetsrv\rewrite.dll。但是在 IIS 8 的模块中没有添加该模块,但是尽管我一次又一次地添加和测试,但它没有工作。从中午开始,我一直在寻找解决方案,现在已经是午夜了。再次感谢..
    【解决方案2】:

    我找不到导致问题的原因,但我今天刚刚通过重新安装 windows 服务器和 IIS 8 解决了它。

    感谢您的关注和宝贵的时间,

    阿尔珀

    【讨论】:

      【解决方案3】:

      在 Windows Service 2008 到 Windows Service 2012 更新后,我遇到了类似的问题,虽然我还没有完全测试过,但我所做的只是专门卸载/重新安装重写模块。

      希望这对遇到同样问题的人有所帮助。

      【讨论】:

        【解决方案4】:

        首先你必须检查rewrite url是否正常工作,按照这个示例教程:

        http://www.iis.net/learn/extensions/url-rewrite-module/using-failed-request-tracing-to-trace-rewrite-rules

        如果没有,请打开 IIS8 并检查是否显示 URL 重写图标。如果没有从这里下载 msi:

        http://www.iis.net/downloads/microsoft/url-rewrite

        并重新安装模块。现在您可以在根节点(服务器节点)以及网站和 Web 应用程序节点上的 IIS 管理器中看到 URL 重写模块。

        希望对你有帮助!

        【讨论】:

        • 你安装了 URL Rewrite 2.0 吗?
        • 对我来说,URL-REWRITE 模块必须双安装,尽管在 IIS 中 HTTP-Redirect 的图标是可见的。显然,重定向和重写不要混淆
        【解决方案5】:

        我也有这个问题。 正如 OP 所注意到的,.dll 未注册。安装程序说一切都很好,重写图标在 IIS 管理器中,但它不起作用。检查 .dll 是否存在(参见下面的路径)。使用微软记事本,真的,我不是在开玩笑,它必须是微软记事本,甚至Visual Studio都无法使用。以管理员身份启动记事本并打开 C:\Windows\System32\inetsrv\Config\applicationHost.config

        将以下行添加到<globalModules> 节点。

        <add name="RewriteModule" image="%SystemRoot%\system32\inetsrv\rewrite.dll" />
        

        保存,现在试试你的规则。

        确实必须是记事本,如果您尝试在 64 位系统上使用其他任何东西编辑 applicationHost.config,您将需要花费数小时的时间。我见过的最奇怪的窗户异常之一。 http://weblog.west-wind.com/posts/2008/Aug/09/Editing-Applicationhostconfig-on-64-bit-Win2008 http://dpotter.net/technical/2009/11/editing-applicationhostconfig-on-64-bit-windows/

        【讨论】:

        • 不一定是记事本,可以是任何64位的编辑软件。我使用 Notepad++ 64 位(32 位会让你流泪,哈哈)
        【解决方案6】:

        对我来说,我的 URL 重写在 IIS7.5 中有效,但在 IIS8 中无效

        问题在于模式

        在 IIS7.5 中,我将模式写为 off

        在 IIS8 中,我必须将其更新为 ^OFF$

        【讨论】:

        • 为什么,可以参考一下链接吗?
        【解决方案7】:

        它有助于检查和修复重写规则。我知道它早先有效,但我不知道要更改它。

        【讨论】:

          【解决方案8】:

          我忘记为要重定向的域添加绑定。 例如。重定向到https://www.example.com 通常需要以下绑定:

          这些重定向规则 (from SO) 然后对我有用:

          <rule name="Redirect from non www" stopProcessing="true">
              <match url=".*" />
              <conditions>
                <add input="{HTTP_HOST}" pattern="^example.com$" />
              </conditions>
              <action type="Redirect" url="https://www.example.com/{R:0}" redirectType="Permanent" />
            </rule>
            <rule name="Redirect from non https" stopProcessing="true">
              <match url=".*" />
              <conditions>
                <add input="{HTTPS}" pattern="^OFF$" />
                <add input="{HTTP_HOST}" pattern="^www.example.com$" />
              </conditions>
              <action type="Redirect" url="https://www.example.com/{R:0}" redirectType="Permanent" />
            </rule>
          

          【讨论】:

          • 这里也一样。好收获
          【解决方案9】:

          打开 IIS 管理器 > 服务器 > 模块 > 配置本机模块 在列表中,选择 RewriteModule 并单击 OK

          IIS Config

          这对我有用。

          【讨论】:

            【解决方案10】:

            同时检查:确保此设置为false,否则在 URL 重写重写 URL 后,.NET 应用程序可能会将其重新路由回去。

              <system.webServer>
                <modules runAllManagedModulesForAllRequests="true">
            

            【讨论】:

              【解决方案11】:

              我花了几个小时来解决这个问题。我经历了一些步骤并让重写模块正常工作。

              1. 重新安装重写模块。如果您在 IIS 中没有看到此模块,并且 已安装的应用程序列表但重写安装程序说 thar is is 已经安装到注册表 (HKLM/SOFTWARE/MICROSOFT/WINDOWS/CURRENTVERSION/Uninstall) 和 搜索“重写”。找到卸载字符串并运行它。它将删除 重写模块,您可以从头开始安装。
              2. 为 IIS 安装应用程序请求路由模块。
              3. 重要!如果您已经拥有带有规则的 web.config,请将其删除。通过 IIS 菜单创建/添加规则。这样 IIS 将激活重要的 ARP 模块。

              【讨论】:

              【解决方案12】:

              转到 IIS管理器->服务器节点->应用请求路由缓存->服务器代理设置->勾选启用代理复选框。

              【讨论】:

                猜你喜欢
                • 2011-05-06
                • 2016-04-25
                • 1970-01-01
                • 2012-10-29
                • 1970-01-01
                • 2010-11-12
                • 1970-01-01
                • 2021-01-26
                • 1970-01-01
                相关资源
                最近更新 更多