我想创建与创建问题时堆栈溢出类似的 url 类型。
例子:
使用 jQuery(插件?)的非 ajax GET/POST 非 ajax-get-post-using-jquery-plugin
我对我用粗体突出显示的最后一部分特别感兴趣。用分隔符将页面标题添加到url的效果如何实现?
这种技术叫什么?
我想创建与创建问题时堆栈溢出类似的 url 类型。
例子:
使用 jQuery(插件?)的非 ajax GET/POST 非 ajax-get-post-using-jquery-plugin
我对我用粗体突出显示的最后一部分特别感兴趣。用分隔符将页面标题添加到url的效果如何实现?
这种技术叫什么?
尽可能使用ASP.NET 路由而不是重写。它适用于 MVC 和 Web 窗体。路由更加灵活,并且在将上下文传递给处理代码、处理回发等方面做得更好。
在执行 ASP.NET 代码之前,您还可以使用IIS7 重写模块在网络服务器级别处理重写。这里有一些关于如何做到这一点的好信息。
SO 的 URL 重写由 ASP.NET MVC 中的路由引擎提供。
这种技术称为“URL 重写”。您用“asp.net”标记了问题,因此 MSDN 可以帮助您:http: //msdn.microsoft.com/en-us/library/ms972974.aspx
Stackoverflow 是在 ASP.Net MVC 中编程的,URL 路由是 MVC 包的标准部分。除了 URL 路由之外,它还提供了更多优势。因此,如果您正在构建一个新网站,并且希望获得 URL 路由以及其他优势的好处,请尝试在 MVC 中进行。
但是请注意,您将不得不学习很多东西。
这种技术叫什么?
就像其他人所说的那样,该技术称为路由。基本上,它需要您格式化的 URL 并将其映射到一些控制器操作。根据 Jon Galloway 的回答, IIS 7 集成了这个功能。对于以前版本的 IIS,您可能必须设置通配符应用程序映射到 ASP.NET 运行时,并且如果您选择的 Web 框架不提供路由功能,您可能需要将自己的 HttpModule 添加到应用程序的请求管道中以处理路由。
用分隔符将页面标题添加到url的效果如何实现?
您可以通过小写标题并用连字符替换非字母数字字符来完成此操作。有时这个位被称为蛞蝓。您可能还希望降低 slug 的长度,以免遇到URL 长度限制问题。您还可以选择在几个地方生成 slug:
请记住,不应使用 slugs 来查找页面数据,这就是页面 ID 的用途;蛞蝓应该是可选的。您的路由规则将只关心从 URL 中获取 ID 并将其提供给正确的控制器操作,同时忽略之后的所有内容。换句话说,唯一关键的部分是问题 ID。蛞蝓只是糖。:)
虽然在这里路由显然是更好的选择,但有一些方法可以轻松地伪造它。例如,这是获取友好 URL 和一些 SEO 的简单方法:
假设您有页面:
example.aspx
即使不执行任何操作,以下 URL也将起作用:
example.aspx/some-friendly-text
您还可以组合查询数据:
example.aspx?id=1
example.aspx/some-friendly-text?id=1
如果需要,您可以使用请求的PathInfo
属性访问该文本。
不要忘记,通过这种类型的路由,人们可以使用您可能不希望他们使用的文本链接到您的页面。
我在英国报纸上看到过很多这样的事情——他们会发布一个带有 URL 的故事
newsdoman.co.uk/articles/1128945/dog-bites-man
然后有人会链接到它
newspaperdoman.co.uk/articles/1128945/newspaper-in-crap-story-shocker
管他呢。