根据提供的文件信息,我们可以深入探讨URL重写技术及其在实际应用中的实现方法。本文将从以下几个方面进行详细解析: ### 一、理解URL重写 #### 定义 URL重写(URL Rewriting)是一种用于改变网页请求地址的技术,通常被用于搜索引擎优化(SEO)、隐藏真实路径或提供更友好的URL格式等场景。它通过特定规则将原始URL转换为新的URL,而这些转换通常在服务器端完成。 #### 作用 1. **提高用户体验**:通过简化和美化URL,使用户更容易理解和记忆。 2. **改善SEO**:搜索引擎更倾向于抓取结构清晰、包含关键词的URL。 3. **安全性增强**:可以隐藏真实的文件路径或参数,增加安全性。 4. **维护便利性**:即使内部结构发生变化,外部链接仍然有效。 ### 二、URL重写的实现方式 #### 使用MSURLRewriter.dll - **组件介绍**:MSURLRewriter.dll是Microsoft提供的一款用于实现URL重写的组件。它能够轻松地对网站的URL进行重定向或者改写。 - **安装方法**: - 下载安装包:可以通过链接1或链接2下载安装程序`MSDNURLRewriting.msi`。 - 安装位置:通常情况下,该组件会被安装到`C:\Windows\assembly`目录下。 - **配置文件**:修改`web.config`文件来启用URL重写功能。 #### 配置示例 在`web.config`文件中添加以下内容: ```xml <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> <add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler,URLRewriter"/> </httpHandlers> </system.web> </configuration> ``` - **关键节点解析** - `<LookFor>`:定义了需要匹配的原始URL模式。 - `<SendTo>`:指定了重写后的目标URL。 - `$1`:表示第一个捕获组(`d(\d+)`)中的数字部分,这里用于构建新URL中的参数值。 例如,当用户访问`http://hostname/d11.aspx`时,系统会自动将其重定向至`http://hostname/default.aspx?id=11`。这种重写规则不仅可以让URL更加简洁美观,还能够帮助隐藏实际的文件路径。 ### 三、扩展应用 #### Actionless Form 除了URL重写外,文件中还提到了一个名为“Actionless Form”的概念。虽然这部分内容并不完整,但我们可以推测其目的可能是为了进一步提高网页表单的安全性和可定制性。 #### 实现方式 1. **自定义类**:创建一个继承自`System.Web.UI.HtmlControls.HtmlForm`的类,并重写`RenderAttributes`方法。 2. **注册自定义控件**:在`web.config`文件或页面顶部使用`@Register`指令来注册自定义的`Actionless Form`。 ### 四、总结 URL重写是一种强大的工具,能够显著提升网站的用户体验和SEO效果。通过本文介绍的方法,开发者可以在.NET平台上轻松实现URL重写功能,并结合其他技术如Actionless Form进一步增强网站的安全性和功能性。希望本文能为读者带来有价值的启示。
下载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>
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
</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)
{
writer.WriteAttribute("name", this.Name);
base.Attributes.Remove("name");
writer.WriteAttribute("method", this.Method);
base.Attributes.Remove("method");
this.Attributes.Render(writer);
base.Attributes.Remove("action");
if (base.ID != null)
writer.WriteAttribute("id", base.ClientID);
剩余5页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 网上书城系统(Struts+Hibernate+Mysql).rar
- 网上书店(struts+hibernate+css+mysql).rar
- 网上书店系统(论文+jsp源程序)130220.rar
- 网上书店系统(论文+jsp源程序).rar
- 网上书店(struts+hibernate+css+mysql)130223.rar
- 系统详细配置方法.rar
- 文本编辑器.rar
- 项目申报系统(Struts2+Spring+Hibernate+Jsp+Mysql5).rar
- 纯电动汽车再生制动策略,Cruise和Simulink联合仿真,提供Cruise整车模型和simuink策略模型,有详细解析文档,可运行
- 学生成绩管理系统(SSH+MYSQL)130221.rar
- 学生成绩管理系统(SSH+MYSQL).rar
- 项目申报系统(Struts2+Spring+Hibernate+Jsp+Mysql5)130223.rar
- 移动ssh项目(struts+spring+hibernate+oracle).rar
- 阳光酒店管理系统(javaapplet+SQL)130425.rar
- 移动ssh项目(struts+spring+hibernate+oracle)130222.rar
- 音乐网站(JSP+SERVLET)130222.rar