第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,它们会惩罚我的网站。
谢谢。
发布于 2015-08-03 20:36:40
我能够用多种路由方法来解决这个问题。
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 = "" }
);https://stackoverflow.com/questions/31795567
复制相似问题