IIS URL 重写

Posted

技术标签:

【中文标题】IIS URL 重写【英文标题】:IIS URL Rewriting 【发布时间】:2012-04-25 04:37:02 【问题描述】:

使用 URL 重写模块,我有一个规则设置,定义为:

Matches the pattern
Regular Expressions
Pattern: /support/viewmessages.aspx
Ignore Case: true
Action Type: Redirect

Redirect URL: http://newdomain/support/viewmessages.aspx
Append Query String: true
Redirect Type: 301

在我看来,它应该重定向任何格式如下的 URL:http://olddomain/support/viewmessages.aspx?forum=20&topic=75942&ForumName=General%20Discussion 成为:http://newdomain/support/viewmessages.aspx?forum=20&topic=75942&ForumName=General%20Discussion

但是,似乎什么都没有发生。我在旧域上得到了我的 404,它不会在附加了查询字符串的情况下进入 404。

这是 IIS 在我的 web.config 中生成的代码:

<rule name="Forum Posts" patternSyntax="ECMAScript" stopProcessing="true">
    <match url="/support/viewmessages.aspx" />
    <action type="Redirect" url="http://newdomain/support/viewmessages.aspx" appendQueryString="true" />
</rule>

任何帮助将不胜感激。

【问题讨论】:

在我看来,这更像是服务器故障问题。 “编程”在哪里? 【参考方案1】:

尝试 1:您是否尝试过不使用正斜杠的模式?我的另一个想法是斜线和点是否有什么特别之处,因为它们可能被视为正则表达式中的特殊字符。


第 2 点:您确实知道点是 regular expressions, 中的特殊字符,对吧?您可能必须找到一种方法来逃避它,以便 url 喜欢“/support/viewmatches\.aspx”

【讨论】:

"/support/viewmatches\.aspx" 不起作用,但 "support/viewmatches\.aspx" - 所以看起来你在两个方面都是对的!

以上是关于IIS URL 重写的主要内容,如果未能解决你的问题,请参考以下文章

IIS5.1设置URL重写?

IIS URL重写

如何配置iis rewrite模块的url重写规则

关于IIS7 URL重写的问题

使用 IIS 7 重写模块重写 & 符号 URL

url重写,IIS需要这么配置,~/aa.aspx?id=1变成~/aa_1/