[解决] IIS8.5 URL伪静态重写无效,出现404错误
作者:admin 时间:2022-8-29 16:59:57 浏览:我已经在我的 IIS 上配置了一个重写规则,但它似乎永远不会生效。我已经为此工作了几个小时,没有任何运气。这是我在应用程序的web 配置中的规则:
<rewrite>
<rules>
<rule name="Rewrite frienly url to snapshot" stopProcessing="true">
<match url="/(localhost:2934)\/trabajos\/([\w-]+)\/([\w-|\-]+)" />
<action type="Rewrite" url="\/snapshots/{R:2}.html" logRewrittenUrl="true" />
</rule>
</rules>
</rewrite>
我的网址如下:
http://localhost:2934/trabajos/3ba2a9e4/some-cool-title
我想重写为:
http://localhost:2934/snapshots/3ba2a9e4.html
这是我在 IIS 中测试模式得到的结果:
从这看来似乎没问题。
但是在浏览器中测试 URL 时,我觉得该规则永远不会被触发,事实上,我已经配置为跟踪失败的请求,如本教程,并且在日志文件夹中没有任何错误或文件。例如:
C:\inetpub\logs\FailedReqLogFiles
我收到了 404 错误,它的记录如下:
2022-03-28 18:56:11 ::1 GET /trabajos/3ba2a9e4/some-cool-tile - 2934 - ::1 Mozilla/5.0+(Windows+NT+6.3;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/42.0.2311.60+Safari/537.36 - 404 0 2 4
2022-03-28 18:56:15 ::1 GET /trabajos/3ba2a9e4/some-cool-title - 2934 - ::1 Mozilla/5.0+(Windows+NT+6.3;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/42.0.2311.60+Safari/537.36 - 404 0 2 2
分析及解答
有网友遇到同样的问题,在 IIS 中设置 URL 重写规则后出现 404 错误。最后通过单击以下项目打开反向代理,问题得以解决。
不少网友对此解决方法给予肯定,说自己也是这样解决了问题。
笔者按:
经过笔者测试,安装 Application Request Routing (应用程序请求路由) (ARR),并且启动它,不用再在IIS做任何设置,问题就得以解决,当然,你要确保你的重写规则没有写错。参考文章:
- 站长推荐