我有一个用于学习 .NET Core 2 的网站 (http://jsoncore.net(,我想从添加到链接和源的 URL 中删除共享主机文件夹名称。例如,我添加了一个像这样的Html.ActionLink:
@Html.ActionLink(page.NavTitle, page.Slug, "Home")
系统将其写入:
<a href="/jsoncore/blog">Blog</a>
我想从链接 URL 中删除"/jsoncore",以便它看起来像这样:
<a href="/blog">Blog</a>
以下是 Startup.cs 中定义的路由:
app.UseMvc(routes =>
{
routes.MapRoute(
"AdminController",
"Admin/{action}",
new { controller = "Admin", action = "Index"}
);
routes.MapRoute(
"BlogController-BlogHome",
"Blog/",
new { controller = "Blog", action = "Index" }
);
routes.MapRoute(
"BlogController-Post",
"Post/{id}",
new { controller = "Blog", action = "Post", id = "" }
);
routes.MapRoute(
"BlogController-Post-Tag",
"Blog/Tag/{id}",
new { controller = "Blog", action = "Tag", id = "" }
);
routes.MapRoute(
"BlogController-Post-Category",
"Blog/Category/{id}",
new { controller = "Blog", action = "Category", id = "" }
);
routes.MapRoute(
"HomeController",
"{action}/{id}",
new { controller = "Home", action = "Index", id = "id?" }
);
routes.MapRoute("AccountController", "Login", new { controller = "Account", action = "Login"});
routes.MapRoute("page", "{id}", new { controller = "Home", action = "Page", url = "" });
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
如果站点托管在虚拟目录中/jsoncore/
则无法将其从URL中删除,因为它实际上是URL的一部分,即您需要它才能到达正确的位置。否则,请求将命中托管在 http://jsoncore.net
的站点,这不是此应用程序。它被称为通用资源定位器是有原因的。显然,只有正确的 URL 才能工作,其中包括/jsoncore/
部分。
一些共享主机允许您绑定到域或子域(尽管可能会收取额外费用(。如果可用,那将是你最好的选择。然后,您可以有效地将站点托管在该域/子域的根目录中,而无需路径前缀。