我正在尝试重新编写一个aspx URL,如下所示:
.../login.aspx
到
/login
在我的网页配置中,我有:
<rewriteMaps>
<rewriteMap name="UserFriendlyURLs">
<add key="/login" value="/login.aspx"/>
</rewriteMap>
</rewriteMaps>
此规则可确保用户输入
时/login
它们显示在页面
/login.aspx
但网址仍为
login
到目前为止一切都很好。
现在我需要它以另一种方式,例如当用户输入:
时/login.aspx
网址仅显示
/login
我尝试过使用:
<rule name="login" stopProcessing="true">
<match url="^login.aspx"/>
<conditions/>
<action type="Rewrite" url="login"/>
</rule>
在我的网络配置中,但这给了我一个404页面未找到错误。
我怀疑这是因为我重定向到一个本身是重定向或重写URL的页面?
我也尝试过:
routes.MapPageRoute("login/", "login", "~/login.aspx");
但它也没有效果。
我做错了什么或错过了什么?
答案 0 :(得分:2)
我需要使用重定向,而不是重写:
<rule name="Login" stopProcessing="true">
<match url="^login.aspx$"/>
<conditions/>
<action type="Redirect" url="login"/>
</rule>
答案 1 :(得分:0)
您还可以使用HttpHandler进行动态URL重写。这篇文章可能会对您有所帮助。URL-Rewriting By HTTPHandler