规则,URL 重写

规则,URL 重写

我正在尝试重写两个 URL。

  • /Inicio.aspx/Home
  • /Usuario/Solicitud.aspx/Usuario/Solicitudes

使用IIS的模块重写。

我制定了规则:

编辑入站规则 #1


编辑入站规则 #1

并将代码放入 web.config 中

<rule name="Clean url" stopProcessing="true">
    <match url="^Inicio$" />
    <action type="Rewrite" url="/Home" />
  </rule>

  <rule name="Clean solicitud" stopProcessing="true">
    <match url="^Usuario/Solicitud$" />
    <action type="Rewrite" url="/Usuario/Solicitudes" />
  </rule>

但它不起作用。

我甚至把这个放进去了Global.asax

 public static void RegisterRoutes(RouteCollection routeCollection)
{

    routeCollection.MapPageRoute("", "{Home}", "~/Inicio.aspx");
    routeCollection.MapPageRoute("", "Usuario/{Solicitud}", "~/Usuario/Solicitud.aspx");
}

我好几天都在尝试解决这个问题。

答案1

我注意到当我像这样编写规则时导致错误 404.0 的原因:^Inicio.aspx 发送错误,但只是在这种情况下。以任何其他方式编写,应用程序都会运行,但不执行任何操作

404 表示它“正在工作”,但这/Home不是有效的 URL 路径。(/Home当您直接请求时,路由是否正常?我认为不是。)404 响应就是这样;HTTP 响应,它在这种情况下严格来说不是“错误”,正如您似乎暗示的那样。将正则表达式更改为^Inicio$避免 404 响应,但就像您所说的那样,它“什么也不做” - 因为它永远不会匹配 - 它实际上什么也不做。

这又回到了我原来的评论...难道不应该反过来吗?例如链接到/Home(“Clean url” URL)并从重写到/Home/Inicio.aspx底层文件系统路径)?

在这种情况下,你的规则将变成如下形式:

<rule name="Clean url" stopProcessing="true">
  <match url="^/Home$" />
  <action type="Rewrite" url="/Inicio.aspx" />
</rule>

相关内容