IIS URL重写不适用于IIS 8

问题描述 投票:21回答:11

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

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

提前致谢,

阿尔珀

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

url-rewriting web-config iis-8
11个回答
7
投票

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

希望能帮助到你!


0
投票

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

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

-1
投票

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

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

阿尔珀


4
投票

我忘了为要重定向的域添加绑定。例如。重定向到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>

3
投票

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

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

2
投票

我也有这个问题。 OP注意到,.dll没有注册。安装程序说一切都很好,IIS管理器中有重写图标,但它不起作用。检查.dll是否存在(参见下面的路径)。使用微软记事本,真的,我不是在开玩笑,它必须是微软记事本,甚至视觉工作室都不会为此工作。以管理员身份启动记事本,然后打开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/


2
投票

对我来说,我的URL重写在IIS 7.5中工作,但在IIS 8中不起作用

问题是模式

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

在IIS8中,我不得不将其更新为^OFF$


1
投票

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

希望这有助于任何人遇到同样的问题。


1
投票

它有助于检查和修复重写规则。我知道它早先工作,我不知道改变它。


1
投票

打开IIS管理器>服务器>模块>配置本机模块在列表中,选择“重写模块”,然后单击“确定”

IIS Config

这适合我。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.