IIS UrlRewrite 不适用于 IIS 8
Posted
技术标签:
【中文标题】IIS UrlRewrite 不适用于 IIS 8【英文标题】:IIS UrlRewrite is not working for 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 规则运行良好..
【问题讨论】:
【参考方案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 通常需要以下绑定:
https://www.example.com https://example.com http://www.example.com http://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】:我花了几个小时来解决这个问题。我经历了一些步骤并让重写模块正常工作。
-
重新安装重写模块。如果您在 IIS 中没有看到此模块,并且
已安装的应用程序列表但重写安装程序说 thar is is
已经安装到注册表
(
HKLM/SOFTWARE/MICROSOFT/WINDOWS/CURRENTVERSION/Uninstall
) 和
搜索“重写”。找到卸载字符串并运行它。它将删除
重写模块,您可以从头开始安装。
为 IIS 安装应用程序请求路由模块。
重要!如果您已经拥有带有规则的 web.config,请将其删除。通过 IIS 菜单创建/添加规则。这样 IIS 将激活重要的 ARP 模块。
【讨论】:
什么是ARP模块?你的意思是Application Request Routing module?【参考方案12】:转到 IIS管理器->服务器节点->应用请求路由缓存->服务器代理设置->勾选启用代理复选框。
【讨论】:
以上是关于IIS UrlRewrite 不适用于 IIS 8的主要内容,如果未能解决你的问题,请参考以下文章
powershell 一个基本的PowerShell脚本,用于将IIS 7应用程序请求路由(tl; dr; UrlRewrite的反向代理功能)推送到多个服务器。
node + express + iis + iisnode + urlrewrite搭建站点
IIS7 urlrewrite 模块 - 外部 xml 文件中的规则