You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core中移除URL末尾单个斜杠失败,现有代码仅支持多斜杠

你当前的代码问题在于:只有当路径需要转换为小写时才会执行重定向。如果路径已经是小写,哪怕你移除了末尾的单个斜杠,也不会触发跳转,所以单个斜杠的URL始终保持不变。

修复方案一:合并路径处理逻辑

修改自定义重写规则,先处理斜杠移除和小写转换,只要路径有变化就执行重定向(不管是因为斜杠还是大小写):

var rewriteOptions = new RewriteOptions()
    .Add(ctx =>
    {
        var request = ctx.HttpContext.Request;
        var originalPath = request.Path.Value;
        var processedPath = originalPath;

        // 移除末尾单个/或多个/(排除根路径/)
        if (processedPath.Length > 1 && processedPath.EndsWith("/"))
        {
            processedPath = processedPath.TrimEnd('/');
        }

        // 转换为小写
        processedPath = processedPath.ToLowerInvariant();

        // 只要处理后的路径和原始路径不同,就触发重定向
        if (processedPath != originalPath)
        {
            var newUrl = $"{processedPath}{request.QueryString}";
            ctx.HttpContext.Response.Redirect(newUrl, permanent: true);
        }
    });

application.UseRewriter(rewriteOptions);
application.UseResponseCaching();

这里TrimEnd('/')会自动处理单个或多个末尾斜杠,所以原来的多斜杠重定向规则可以去掉,避免重复处理。

修复方案二:单独添加单个斜杠重定向规则

如果你想保留原有逻辑,也可以单独添加一条正则重定向规则来处理末尾单个斜杠的情况:

var rewriteOptions = new RewriteOptions()
    // 处理末尾单个斜杠(排除根路径/)
    .AddRedirect(@"^(.*[^/])/$", "$1", permanent: true)
    // 处理多斜杠
    .AddRedirect(@"^(.*?)/{2,}$", "$1", permanent: true)
    .Add(ctx =>
    {
        var request = ctx.HttpContext.Request;
        var path = request.Path.Value;

        // 仅处理大小写转换的重定向
        if (path.ToLowerInvariant() != path)
        {
            var newPath = path.ToLowerInvariant();
            var newUrl = $"{newPath}{request.QueryString}";
            ctx.HttpContext.Response.Redirect(newUrl, permanent: true);
        }
    });

application.UseRewriter(rewriteOptions);
application.UseResponseCaching();

正则^(.*[^/])/$的作用是匹配所有末尾带单个斜杠且路径不是根路径的URL,将其重定向到去掉斜杠的版本。

注意事项

  • 确保UseRewriter在UseResponseCaching之前调用,避免缓存未重定向的旧响应。
  • 重定向使用permanent: true(301重定向),有利于搜索引擎更新索引,符合SEO规范。

内容的提问来源于stack exchange,提问作者confusedMind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 14:43:23