使用 ASP.NET (C#) 进行 URL 伪装






2.82/5 (9投票s)
2005年4月10日
2分钟阅读

80275
一篇简短的文章,介绍如何在 ASP.NET 中使用简洁的 URL 替换冗长且难看的查询字符串 URL。
引言
如今,内容管理系统 (CMS) 是一种商品。这些系统使普通用户能够创建和维护网站,而无需任何技术技能。通常,CMS 是使用数据库构建的,并且通过如下 URL 访问在 CMS 中创建的站点中的页面
http://www.somecompany.com/Templates/page1213___.aspx
或
http://www.somecompany.com/content.aspx?pageID=1213 等。
对于有经验的用户来说,这真的无关紧要,但从可用性的角度来看 - 这是不允许的!如果您是一位正在寻找信息的普通用户,那么像下面这样的 URL 可能会更有意义
http://www.somecompany.com/product
或
http://www.somecompany.com/support
这就是 URL 伪装派上用场的地方。
背景
要尝试这个技巧,请在 VS.NET 中创建一个空解决方案,添加一个 C# ASP.NET Web 应用程序(称其为“Cloaking”)。创建并添加 404.aspx、content1.aspx、content2.aspx 和 content3.aspx 到您的解决方案。确保用一些内容填充它们,以便您可以将它们彼此区分开来。
您的解决方案资源管理器应该看起来像这样
设置自定义 404 错误页面
为了实现这个技巧,您需要配置 IIS 以使用自定义的 404 错误页面(在本例中为 404.aspx)。为此,请转到 IIS 管理控制台,选择正确的网站(在本例中,该网站名为“Cloaking”)。右键单击它,然后选择“属性”,然后选择“自定义错误”选项卡。
在错误列表中找到 404 条目,然后单击“编辑属性”。在“消息类型”下拉列表中选择“URL”,并在 URL 文本框中键入 404.aspx 页面的完整路径,在本例中为“/Cloaking/404.aspx”。
它应该看起来像这样
切换回 VS.NET,打开 Global.asax 文件并查看代码。向下滚动到 Application_BeginRequest
方法并粘贴以下内容
// The requested URL
string strURL = Request.RawUrl.ToLower();
// If the page didnt exist, the IIS tries to send the visitor to 404.aspx,
//this is where we intercept.
if(strURL.IndexOf("404.aspx") > 0)
{
// Scan the path for the keywords and rewrite the path to the preferred content
if (strURL.IndexOf("products") > 0) Context.RewritePath("content1.aspx");
if (strURL.IndexOf("sales") > 0) Context.RewritePath("content2.aspx");
if (strURL.IndexOf("support") > 0) Context.RewritePath("content3.aspx");
}
..就是这样!
如果您浏览 https:///Cloaking/Products,浏览器将显示 content1.aspx 的内容,并在地址字段中保持友好的 URL。
该代码使用 strURL.IndexOf()
方法来检测关键字,这有点粗糙,只是为了说明该技术。
URL 伪装的良好使用
为了更好地利用这个技巧,您需要在一个 CMS 系统中实现它。为了说明可能的用法,在您的 CMS 中,您可能有一个包含网站页面的表。使用名为“path”的列扩展 pages 表,并在 application_beginrequest
方法中搜索该列,以查找要重定向到的相应页面。
听起来很有趣吗?发表评论,也许我会发布一个实现 URL 伪装的简单 CMS。
历史
- 2005-04-10:创建