27

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

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

提前致谢,

阿尔珀

ps:网址规则运行良好..

4

12 回答 12

10

首先,您必须检查 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 重写模块。

希望能帮助到你!

于 2013-06-20T09:27:12.150 回答
6

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

于 2020-06-23T08:36:16.410 回答
5

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

这些重定向规则(来自 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>
于 2016-05-08T10:22:12.343 回答
5

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

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

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

希望这可以帮助任何有同样问题的人。

于 2013-04-22T08:44:51.833 回答
2

我也有这个问题。正如 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 位窗口/

于 2014-08-06T20:53:47.883 回答
2

打开 IIS Manager > Server > Modules > Configure Native Modules 在列表中,选择 RewriteModule 并单击 OK

IIS 配置

这对我有用。

于 2016-08-14T06:22:46.660 回答
1

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

问题是模式

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

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

于 2015-05-01T10:11:59.543 回答
0

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

于 2013-01-30T17:43:44.027 回答
0

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

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

阿尔珀

于 2013-01-31T21:28:37.767 回答
0

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

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
于 2016-10-21T00:36:38.970 回答
0

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

于 2015-09-01T20:02:28.843 回答