首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC创建虚拟路径

MVC创建虚拟路径
EN

Stack Overflow用户
提问于 2015-08-03 19:47:48
回答 1查看 295关注 0票数 1

第1部分

我正在创建一个MVC网站,从数据库中提取文章。我正在尝试复制WordPress的一个特性。我的主网址看起来像"http://127.0.0.1/Articles/Index“。我可以很容易地创建一个URL来加载文章:"http://127.0.0.1/Articles/Index?id=1234“。

但是这个网址对搜索引擎来说不是很好,所以我想创建一个虚拟网址:"http://127.0.0.1/Articles/Index/Computer-Science/Machine-Language“。

这将从计算机科学类别在数据库中加载题为“机器语言”的文章。数据库中将有一个虚拟URL "/computer-science/machine-language“。

总之,我的代码运行良好,它将正确的文章从数据库中提取出来,但是浏览器没有显示文章,而是显示了404错误,因为"/Computer-Science/Machine-Language“实际上并不存在。

因此,我的问题是,如何阻止浏览器抛出404错误?浏览器认为它是一个真正的URL,但是URL只存在于我的数据库中。

第2部分

我还有另外两个问题要问。首先,我是否可以从URL中删除索引?所以它只是/文章/计算机-科学/机器语言?

第二,我是否可以强迫URL都是小写的?MVC似乎在我的URLS中使用大写字母,我不喜欢它。有人告诉我,这会给搜索引擎优化带来麻烦,因为谷歌把/computer-science和/Computer-Science看作是两个不同的带有重复数据的URL,它们会惩罚我的网站。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-08-03 20:36:40

我能够用多种路由方法来解决这个问题。

代码语言:javascript
复制
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

        routes.MapRoute(
            name: "Article",
            url: "{controller}/{action}/{category}/{article}",
            defaults: new { controller = "Article", action = "Index", category = "", article = "" }
        );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31795567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档