gpt4 book ai didi

c# - 从所有网页中删除 .aspx

转载 作者:行者123 更新时间:2023-11-30 22:18:23 25 4
gpt4 key购买 nike

如何从网站的每个 .aspx 网页中删除 .aspx?以下工作,但仅适用于网站的根目录,定义长文件夹结构效率低下且困惑。

void RegisterRoutes(RouteCollection routes)
{
routes.MapPageRoute("RemASPx", "{file}", "~/{file}.aspx");
}

void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
RegisterRoutes(RouteTable.Routes);
}

下面的代码没有尾部斜杠,但我如何强制它有一个尾部斜杠,因为什么都不能跟在包罗万象的 routeURL 之后?

routes.MapPageRoute("RemASPx", "{*file}", "~/{file}.aspx");

最佳答案

保持这个路由设置:

void RegisterRoutes(RouteCollection routes)
{
routes.MapPageRoute("RemoveASPx", "{*file}", "~/{file}.aspx");
}

void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}

添加此重写:

protected void Application_BeginRequest(object sender, EventArgs e)
{
string url = HttpContext.Current.Request.Url.AbsolutePath;
if (string.IsNullOrEmpty(url) ||
System.IO.Directory.Exists(Server.MapPath(url)))
return;

if (url.EndsWith("/"))
{
Response.Clear();
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", url.Substring(0, url.Length - 1));
Response.End();
}
}

上面的代码块:

  1. 出于不言自明的原因检查 url 是否为 null 或空
  2. 检查 URL 是否是目录,因为您不想重写目录(如果应用程序默认状态中有任何内容,将导致重定向循环,因为目录中添加了尾部斜杠)
  3. 检查 URL 是否以斜杠结尾,因此是否需要删除它
  4. 使用 301 响应(最合适的响应 - 特别是对于 SEO);添加 header 导致重定向

关于c# - 从所有网页中删除 .aspx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16129639/

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