2008-08-05 102 views

回答

23

尝试管理融合网址重写和反向代理:

http://urlrewriter.codeplex.com

改写这个规则会be:

# clean up old rules and forward to new URL 
RewriteRule ^/?user=(.*) /users/$1 [NC,R=301] 

# rewrite the rule internally 
RewriteRule ^/users/(.*) /?user=$1 [NC,L] 
+0

一个建议:我会调整第一个RewriteRule看起来像^ /?用户=(\ w *)以便http://www.website.com/?users=smith&day=monday不生成http://www.website.com/users/smith&day=monday – Dscoduc 2009-02-06 17:13:32

+0

这是一个好主意,并完全支持这个.NET版本。最初的意图是让我的示例与不支持该语法的mod_rewrite兼容。 – 2009-05-26 16:14:42

+0

这太棒了。 – 2009-08-16 07:52:53

20

Scott Guthrie介绍了如何在.Net中原生地完成这项工作here

我已经使用了httpmodule方法,它工作得很好。这基本上是ManagedFusion为您做的。

4

我已经使用了从URL重写www.urlrewriting.net取得了巨大成功的HTTP模块(虽然我相信早得多,简单的版本)

如果你有很少的实际重写规则,那么内置于.NET 2.0的URL映射可能是一个更容易的选择,网上有几个这样的写法,4guysfromrolla似乎是相当详尽的,但你可以看到它们不支持正则表达式映射,因为它们在动态环境中显得相当无用(假设“史密斯“在你的例子中是不是一个特例,那么这些将是没有用的)

5

微软现在发运一个官方URL重写Mod对于IIS:http://www.iis.net/download/urlrewrite

它支持大多数类型的重写,包括设置服务器变量和通配符。

它也将在所有开箱即用的Azure Web实例上存在。