asp.net 核心重写中间件而不是重写,可能存在正则表达式问题



(我正在使用VS2017和 asp.net 核心v1.1.1(你好

我正在尝试使我的网址对 SEO 更友好,我已经通过 nuget 添加了 .net 核心重写中间件,并按照本指南 https://learn.microsoft.com/en-us/aspnet/core/fundamentals/url-rewriting

由于某种原因,我的 URL 没有被重写。我的网址目前是/Albums?slug=first-test,我希望它们是 Albums/first-test

这是我想出来的(从启动.cs(:

 var options = new RewriteOptions()
.AddRewrite(@"^(.*)?slug=(.*)", "$1/$2", skipRemainingRules: true)
.AddRewrite(@"^Albums?slug=(.*)", "Albums/$1", skipRemainingRules: true);
 app.UseRewriter(options);

如您所见,我正在尝试 2 个变体,我希望有相同的结果,这是因为我也有/Galleries?slug=first-test,我希望我能同时为两者制定一条规则。

所以,看来我犯了一个菜鸟错误。 我需要做的就是绘制新路线!我注意到控制器/动作/id 不包含 ?id=,这让我想起了我早期的学习日子,事实上是第一天,哈哈。 所以这是我添加的内容:

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{slug?}");
    });

编辑:最后更改了可选内容,因为添加新路由会破坏我的主页索引。

最新更新