如何在asp.net中实现URL重写

时间:2015-09-01 08:05:57

标签: c# asp.net

我正在尝试重新编写一个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");

但它也没有效果。

我做错了什么或错过了什么?

2 个答案:

答案 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