2).通过自定义HTTP Module或 HTTP Handler来重写 URL;
3).借助正则表达式来重写URL:
理解重写的方式:
创建自定义 HTTP 模块和 HTTP 处理程序是相对简单的任务,包括创建实现正确接口的托管类。HTTP 模块必须实现 System.Web.IHttpModule 接口,而 HTTP 处理程序和 HTTP 处理程序工辩嫌液厂必须分别实现 System.Web.IHttpHandler 接口和 System.Web.IHttpHandlerFactory 接口。创建 HTTP 处理程序和 HTTP 模块的细节超出了本文的范围。要获得详细的背景知识,请阅读 Mansoor Ahmed Siddiqui 的文章 HTTP Handlers and HTTP Modules in ASP.NET。
创建了自定义 HTTP 模块或 HTTP 处理程序之后,必须将其注册到 Web 应用程序。为整个 Web 服务器注册 HTTP 模块和 HTTP 处理程序仅需在 machine.config 文件中进行简单的添加即可;而为特定 Web 应用程序注册 HTTP 模块或 HTTP 处理程序包括向应用程序的 Web.config 文件者纯中添加几行 XML。
特别要说明携物的是,要将 HTTP 模块添加到 Web 应用程序,应在 Web.config 的 configuration/system.web 部分添加以下几行:
解决方法:如下,我们的网页URL后经常会跟有多个的参数,比如Information.aspx?ID=1&Type=2,这样的URL让人太直观的看到了参数,感觉不是很好,而且会导致URL很长,所以可以用下面的方法来重写URL,即可以缩短URL、又易于被搜索引擎收录,还可以隐藏真实的路径,使参数变得隐晦一点点,提高安全性。
使用C#重写URL的步骤:(以改写Information.aspx?ID=1&Type=2为例)
第一步,下载MS的URLRewriter.dll,添加引用到你的Web程序的Bin文件夹下,下载地址是http://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>~/Infor_(/d+)_(/d+)/.aspx</LookFor><SendTo>~/Information.aspx?ID=$1&Type=$2</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>~/Infor_(/d+)_(/d+)/.aspx</LookFor><SendTo>~/Information.aspx?ID=$1&Type=$2</SendTo>
<LookFor>~/Infor_(/d+)_(/d+)/.aspx</LookFor>表示,用户输入的URL(即显示的URL),_(/d+)_(/d+)/.aspx是 URL中文件名匹配的正则表达式(大家也可根据自己的需要自行设定)。
希望对你有帮助!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)