使用URL重写优化网站:原理与实例
"本文介绍了URL重写技术,这是一种通过改变Web请求的URL来实现自动重定向的方法。URL重写能够带来诸如缩短URL、提高安全性以及增强用户体验等优势。同时,文中提到了如何在ASP.NET环境中使用第三方库MSURLRewriter.dll进行URL重写配置,并给出了具体的配置示例。" URL重写是Web开发中一个重要的优化策略,它允许开发者将复杂的、包含参数的URL转换为简洁、易于理解和记忆的形式。在标题提到的"Url重写txt文档"中,URL重写被描述为一种能够截取并自动重定向Web请求的过程。例如,当用户尝试访问`hostname/101.aspx`时,服务器会自动将其重定向到`http://hostname/list.aspx?id=101`。这种技术的主要优点有: 1. **缩短URL**:通过重写,可以将含有多个参数和复杂结构的URL简化,使URL更易于阅读和分享。 2. **隐藏实际路径**:URL重写可以隐藏应用程序的实际路径,从而提高网站的安全性,防止恶意用户通过推测路径来攻击系统。 3. **利于SEO**:搜索引擎更喜欢简洁、有意义的URL,因此URL重写有助于提高网站在搜索引擎中的排名,更容易被收录。 在描述中提及的实现方式中,我们可以看到使用了名为MSURLRewriter.dll的第三方库。这个库可以方便地在ASP.NET环境中集成URL重写功能。安装该库后,需要在web.config文件中进行配置,以定义URL重写规则。配置文件的示例代码展示了如何设置一条规则,将所有形如`~/d(\d+)\.aspx`的请求重定向到`~/default.aspx?id=$1`,其中`\d+\`匹配一个或多个数字,`$1`则代表捕获的数字组,用于传递到目标URL中。 配置文件中的 `<sectionname="RewriterConfig"type="URLRewriter.Config.RewriterConfigSerializerSectionHandler,URLRewriter"/>` 定义了一个名为“RewriterConfig”的配置节,用于存放URL重写规则。`<RewriterRule>`元素则定义了具体的重写规则,`<LookFor>`指定了需要匹配的原始URL模式,而`<SendTo>`则定义了匹配成功后的重定向目标。 在`<system.web>`部分添加的`<httpHandlers>`配置,确保了对于`.aspx`请求,系统会使用`URLRewriter.RewriterFactoryHandler`处理程序,这使得URL重写规则能够在处理请求时生效。 URL重写是提升网站用户体验和安全性的有效手段,通过合理的配置,可以实现对URL的灵活管理和优化。在ASP.NET环境中,利用第三方库如MSURLRewriter.dll可以轻松实现这一功能。
比如浏览器发来请求hostname/101.aspx ,服务器自动将这个请求中定向为http://hostname/list.aspx?id=101。
url重写的优点在于:
缩短url,隐藏实际路径提高安全性
易于用户记忆和键入。
易于被搜索引擎收录
二 实现url重写的基本方法
下载MS的URLRewriter.dll,放到你的web程序的bin下
下载地址1:http://www.rickel.cn/uploads/DevTools/MSDNURLRewriting.msi
下载地址2:download.microsoft.com/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi
下载完成后,在web.config里设置如下:
<?xml version="1.0" encoding="utf-8" ?>
<!--overred-->
<configuration>
<configSections>
<section name="RewriterConfig"type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
</configSections>
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/d(\d+)\.aspx</LookFor>
<SendTo>~/default.aspx?id=$1</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
<system.web>
<httpHandlers>
</httpHandlers>
</system.web>
</configuration>
其中
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
用于指定配置节"RewriterConfig"的处理程序类的名称为”URLRewriter.Config.RewriterConfigSerializerSectionHandler”,该类存在于bin目录下的URLRewriter .dll文件中
关键的是这两句
<LookFor>~/d(\d+)\.aspx</LookFor>
<SendTo>~/default.aspx?id=$1</SendTo>
<LookFor>~/d(\d+)\.aspx</LookFor>表示,用户输入的url,d(\d+)\.aspx是 url中文件名匹配的正则表达式(此处为字母d开头,后面跟一个或多个数字,并以.aspx结尾。用户也可根据自己的需要自行设定)。
<SendTo>~/default.aspx?id=$1</SendTo>,表示当服务器接收到符合上面条件的请求后如何重写url。此处表示访问defalutl.aspx并传入参数id,其值$1将用用户请求的文件名中的第一个数字来表示。
例如用户输入 hostname/d11.aspx,服务器会把他重写为http://hostname/default.aspx?id=11。换句话说用户输入http: //hostname/d11.aspx,实际访问的是http://hostname/default.aspx?id=11。这样就起到了隐藏真实文件名,并便于用户记忆的作用。
处理回发
在重写后的url里如果产生回发,例如有一个按钮,又调用了该被重写的aspx,用户浏览器中将会显示该aspx文件实际的地址,也就是http: //hostname/default.aspx?id=11。但从用户的角度考虑,如 果单击按钮时突然看到 URL 更改会使他们感到不安。因此必须解决这个问题。
解决方法有二:
(1)自己定义一个Actionlessform类,在aspx中不再使用系统提供的form 标记
namespace ActionlessForm
{
public class Form : System.Web.UI.HtmlControls.HtmlForm
{
protected override void RenderAttributes(HtmlTextWriter writer)
{
剩余5页未读,继续阅读
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦