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

我想重新编写一个aspx URL,如下所示:

.../login.aspx

/login

在我的网络配置中,我有:

  <rewriteMaps>
    <rewriteMap name="UserFriendlyURLs">
      <add key="/login" value="/login.aspx"/>
    </rewriteMap>
  </rewriteMaps>

此规则确保用户键入时

/login

它们显示在页面上

/login.aspx

但URL保持为

login

到目前为止都很好.

现在我需要它以另一种方式,例如当用户输入时:

/login.aspx

URL仅显示

/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");

但它也没有效果.

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

最佳答案 我需要使用重定向,而不是重写:

    <rule name="Login" stopProcessing="true">
      <match url="^login.aspx$"/>
      <conditions/>
      <action type="Redirect" url="login"/>
    </rule>
点赞