我目前对 Microsoft 的 MVC4 有点陌生,我不太了解路由以及我想要的。
我想要做的是让我的 URL 更易于阅读。目前,我的 URL 如下所示:
- foo.com/UserProfile/Details/6
- foo.com/UserExperience/Details/
- foo.com/UserSpecificController/Edit/8
所有用户控制器都以“用户”为前缀,我想知道是否可以更改这些 URL,使它们看起来像这样:
- foo.com/u/Profile/Details/6
- foo.com/u/Experience/Details/
- foo.com/u/SpecificController/Edit/8
我的第一次尝试是使用 IIS:
<rewrite>
<rules>
<rule name="AddTrailingSlashRule1" stopProcessing="true">
<match url="(.*[^/])$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Redirect" url="{R:1}/" />
</rule>
<rule name="Pretty User Redirect" enabled="false" stopProcessing="true">
<match url="User(.*)/(.*)" />
<action type="Redirect" url="u/{R:1}/{R:2}" />
<conditions>
</conditions>
</rule>
<rule name="User pretty URL Rewrite">
<match url="u/(.*)/(.*)" />
<action type="Rewrite" url="User{R:1}/{R:2}" />
</rule>
</rules>
</rewrite>
这工作得很好,除了我会在我所有的链接上得到 /u/ ,无处不在......
例如:foo.com/Home/WhatWeDo/
会出来像:foo.com/u/Home/WhatWeDo/
这将是 404。
我正在使用默认路由配置
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
我所有的链接都是用@Html.ActionLink(...)
如果有人能对此有所了解,将不胜感激。