用ActionlessForm.dll 重写地址出错的问题
最近公司做了一个网站,为了讨好搜索引擎,好多地方在开发的时候都多走了好多路,最重要的就是地址的无扩展名目录式重写。起初我也不会,上网上资料 吧,好家伙这资料写的一个比一个云山雾罩。费了好半天力气才搞定,等搞定了才知道多么的Easy~!于是我决定写博,把这个技术写出来,希望初学者不要像 我一样走弯弯~!
好了,不多说了,开始~!
首先说一下我们要把什么样的页面重写成什么样的页面
就是把www.url.com/text.aspx?id=123重写成www.url.com/123/或www.url.com/123
1。网站引用两个DLL URLRewriter.dll(重写用的DLL,地球人都知道了)和ActionlessForm.dll(处理回发的DLL,具体下面会说到)
URLRewriter.dll下载地址:http://download.csdn.net/source/1929567
ActionlessForm.dll下载地址:http://download.csdn.net/source/1929569
2.配置IIS
你的网站--属性--主目录--配置--插入--C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll 将文件是否存在勾掉
具体其它配置根据自己的需求而定!
3.web.config的配置,如下:
<configuration>节点下:
<configSections> <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter"/> </configSections> <RewriterConfig> <Rules> <!-- 新闻 --> <RewriterRule> <LookFor>~/([0-9]*)</LookFor> <SendTo><![CDATA[~/.aspx?txt=$1]]></SendTo> </RewriterRule> <RewriterRule> <LookFor>~/[0-9]*)/</LookFor> <SendTo><![CDATA[~/Page.aspx?txt=$1]]></SendTo> </RewriterRule> </Rules> </RewriterConfig>
<system.web>节点下:
<httpModules> <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter"/> </httpModules>
经以上三步,目的基本达到,可以在在浏览器里输入www.url.com/123/或www.url.com/123查看了~!
但是,如果你在重写后的页面里放一个button或别的什么控件,在单击button时,页 面的地址会变回原来的样子,这对用户来说可不是什么好事儿。所以要解决这个问题,就要有到上面我说所的ActionlessForm.dll(处理回发的 DLL)了!方法简单的很,如下
1.引入ActionlessForm.dll
2.在重后的页面的第二行写如下代码:
<%@ Register TagPrefix="skm" Namespace="ActionlessForm" Assembly="ActionlessForm" %>
3.将页面中的<form runat="server"></form>替换成:<skm:form id="form1" runat="server"></skm:form>
好了,这样一来就哦了,没什么难度,只要知道方法!
还有就是重写后css,js等带有路径的东东会失效,只要改成绝对路径就可以了~!

浙公网安备 33010602011771号