gpt4 book ai didi

c# - 像 "home.asp"这样的 url 在 mvc 中重定向

转载 作者:太空宇宙 更新时间:2023-11-03 21:08:51 24 4
gpt4 key购买 nike

我需要重建一个网站(过去他们使用经典的 ASP,但他们现在想使用 MVC 4)并且他们不想更改 URL。例如,如果搜索屏幕的 url 是 blabla.com/search.asp,他们希望保持这样。但是 mvc 不允许制作像“search.asp”这样的 url。我想保留这样的 url 但呈现搜索 View 。我需要一个一个地完成这一切还是有一种动态的方式?

例如

requested url = "blabla.com/string variable" 
if variable.Substring(variable.Length - 4) == ".asp";
return View("variable.Substring(0, (variable.Length - 4))")

注意:语法全错了,我知道。我只是想解释一下情况..

注2:他们想要这个是因为“SEO”的事情。他们不想失去他们的收视率。任何不会为谷歌带来任何改变的方法,他们都会接受我猜的那个方法。

最佳答案

你需要两件事。

  1. 为 *.asp 定义一个路由
  2. 为 *.asp 添加处理程序

路由配置

public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
name: "DefaultAsp",
url: "{controller}/{action}.asp/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}

处理程序(WebConfig)

(这个需要插入到/system.webServer/handlers

  <add name="AspFileHandler" path="*.asp" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

这样做,您还使所有使用 MVC 构建的 URL 都可用于 .asp,这意味着如果您有一个调用另一个 View 的 anchor ,该 View 将具有带有 .asp 后缀的普通 mvc URL。

注意

这是通用的,你只需要添加这一行一次。Home/Index 显示的只是默认的 Controller 和 Action。

注2

忘记解释处理程序了。

您需要它,因为 IIS 认为您正在请求一个 ASP 文件,它会尝试访问该页面并返回一个错误,因为它不存在。

使用此处理程序,您允许您的应用程序自行处理这些页面。

关于c# - 像 "home.asp"这样的 url 在 mvc 中重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39167269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com