我们有一个CMS系统,可以创建包含许多参数的长URL。我们希望改变它们的呈现方式,使它们更友好
由于我们已经在这个CMS上构建了许多站点,因此重写CMS以创建友好的URL有点困难(虽然这是我们正在考虑的方法,如果没有找到替代方案),我们正在寻找一种方法,用户点击一个长网址,该网址将变为一个友好的网址 - 在浏览器中 - ,而不使用Response.Redirect()。
在Wordpress中存在这样的方法(我不确定它是在代码中还是在Apache中完成的),我想知道它是否也可以在ASP.NET 2.0中完成。
另一件需要考虑的事情是,网址之间的变化必须通过访问数据库来完成
更新:我们正在使用IIS6
答案 0 :(得分:3)
如果您使用的是ii7,最简单的方法是使用URL Rewrite Module根据该链接,您可以
定义强大的转换规则 复杂的URL变成简单的和 一致的网址
URL Rewrite允许Web管理员 轻松构建强大的规则使用 用.NET编写的重写提供程序, 正则表达式模式匹配, 和通配符映射来检查 URL和其他信息 HTTP标头和IIS服务器变量。 可以编写规则来生成URL 这对用户来说更容易 请记住,搜索引擎很简单 索引,并允许URL跟随 一致且规范的主机名 格式。 URL Rewrite进一步简化了 规则创建过程的支持 用于内容重写,规则模板, 重写地图,规则验证和 导入现有的mod_rewrite规则。
否则,您必须使用Andrew M描述的技术或使用Response.Redirect。在任何情况下,我都相当肯定所有这些方法都会产生http 301响应。我提到这个是因为它不清楚为什么你不想做Response.Redirect。这是编码约束吗?
<强>更新强> 由于您使用的是IIS 6,因此您需要使用其他方法进行URL重写。
来自Scott Mitchell的This Article详细描述了如何做到这一点。
实施网址重写
可以实现URL重写 在IIS上使用ISAPI过滤器 Web服务器级别,或使用HTTP 模块或HTTP处理程序 ASP.NET级别。本文重点介绍 用。实现URL重写 ASP.NET,所以我们不会深入研究 实现URL的细节 用ISAPI过滤器重写。那里 然而,是众多的第三方 ISAPI筛选器可用于URL 重写,例如:
还有很多人!
本文接着描述了如何实现HTTP模块或处理程序。
<强> Peformance 强> 重定向响应HTTP 301通常仅包含少量数据&lt; 1K。如果它引人注意我会感到惊讶。 例如,这些网址的页面加载差异并不明显
"https://stackoverflow.com/q/4144940/119477"
"https://stackoverflow.com/questions/4144940/url-rewrite-without-redirect-in-asp-net"
(我已确认使用ieHTTPHeaders,http 301是用于更改URL的内容)
网页排名
This is谷歌网站管理员中心网站对301的评论。
如果您需要更改网址 页面,因为它显示在搜索引擎中 结果,我们建议您使用 服务器端301重定向。这是 确保用户和用户的最佳方式 搜索引擎是针对 正确的页面。
答案 1 :(得分:1)
我不确定你在这里说的是什么,但基本上用户已经阅读的页面包含一个旧的长URL,你希望它能够动态地更改为新的短URL。客户端,在浏览器从服务器请求页面之前?
我认为完成此操作的唯一方法是使用Javascript来更改URL以响应onclick或document.ready,但这将毫无意义。您需要知道要重新写入的javascript的新短网址,如果您知道这一点,为什么不首先简单地将该网址呈现在链接中?
听起来更像是你想要的URL路由,包括在ASP.Net 4和3.5中?
标准URL重写会修改服务器上的传入请求对象,因此客户端浏览器会提交新URL,下游页面处理程序会查看旧URL。我相信路由事项也会将此概念扩展到传出响应,在将响应页面中的旧URL重新发送到新URL之后再将其发送到客户端。
Scott Gu介绍了这个主题: http://weblogs.asp.net/scottgu/archive/2009/10/13/url-routing-with-asp-net-4-web-forms-vs-2010-and-net-4-0-series.aspx
Scott Gu还有一篇关于正常URL重写的较旧帖子,概述了几种不同的方法。也许你可以通过挂钩Application_PreSendRequestContent并手动修改响应流中的所有href值来扩展这个概念,但我不会自己喜欢它。 http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx
答案 2 :(得分:1)
为了回应额外的评论,我认为您需要做的就是咬紧牙关并修改CMS以将新链接写入页面。您已经说过,您有正常的URL重写,可以在新邮件传入时将其转换为旧URL。如果您还要在标记中写出新的URL,那么一切都应该可以正常工作。
从SEO的角度来看,如果CMS生成的页面具有旧链接,那么这就是搜索引擎将看到和索引的内容。没有什么可以做的,javascript,重定向或其他。 (虽然永久重定向会让你有点方法)。
我也认为你在Wordpres中看到的可能是重定向。没有找到一个例子我不能确定。要做的事情是使用Fiddler或其他http调试器来查看当您按照其中一个链接时会发生什么。
对于完美的搜索引擎优化,一旦你有新的URL工作出站和入站,你想要做的是确定你的新URL是最终的URL。让旧网址重定向到新网址,或者使用canonical link tag返回旧网址中的新网址。