我有一个ASP.NET MVC 3应用程序,用户可以发布建议沿着“bla bla会更好,如果yada yada yada”.
对于建议细节页面,我已经定义了一个很好的SEO友好路线如下:
对于建议细节页面,我已经定义了一个很好的SEO友好路线如下:
routes.MapRoute(null,"suggestion/{id}/{it}/would-be-better-if-{if}",new { controller = "suggestion",action = "details" });
正如你所看到的,我想要修复“会更好的”部分.
这条路线适用于任何旧的建议,并生成链接,如建议/ 5 /本站/将来更好的如果它有一个iphone应用程序,并且点击链接实际上请求相应的详细信息页面.
我的一个朋友,讽刺的是一个测试者,已经设法不经意地发布了一个实际打破路线的建议:“如果”中间总是对齐,这个网站会更好“.
为此建议生成的链接是
/建议/ 84 /本网站/想成为,更好,如果-想成为,如果此结果总是神韵: – 在最中间.
我已经尝试了Phil Haack’s Routing Debugger,并确认该路线实际上会起作用,直到建议/ 84 /本站/将会更好 – 如果是更好 – 如果 – 因此,第二个“将会更好 – 如果“实际上被接受了;添加任何事情之后,实际上会导致url不匹配任何路由(感谢Omar -see的意见 – 寻求帮助).
请记住,我真的不想改变路线定义,因为我认为这是很好的,我可以管理这种情况下,SEO明智.
那么如何使文本等于路由的固定部分阻止链路匹配路由?为什么路线破裂?
我实际上对于为什么更感兴趣,因为我相信理解为什么会导致一个解决方案,或至少对一个相当有趣的问题的正确理解.
解决方法
这看起来像是一个
ASP.NET routing: Literal sub-segment between tokens,and route values with a character from the literal sub-segment的笨蛋,这是一个更简单的错误版本.我建议关闭这个一个.
我回答了这个问题.