使用rewrite在iis上设置规则来实现伪静态,这样在vs中开发的时候将无法调试,必须要是用iis发布才不会造成找不到文件的错误,当然,肯定还有其他的方法来实现伪静态的,不用再iis中设置任何的东西,只需要一个。net的组件和设置一下webconfig文件就ok了,来看一下,这东西,我用的次数很少,每次用都怕忘记,所以记录下来,下次忘记的话也不用Google啦
这回的准备工作,你必须去网上download一个URLRewriter.dll组件了,网上貌似有这个类库的源代码,当然里面也有编译好的dll文件,只需要把dll文件coty到自己站点的Bin下面,然后在网站上右键,添加引用,浏览选择这个dll文件即可。
下面就需要在webconfig里面配置一番了
1、在Web.Config的<system.web>和</system.web>添加以下节点:
<httpModules>
<add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />
</httpModules>
2、在Web.Config的<configuration>和</configuration>添加以下节点:
设置完以上两个步骤,就基本可以运行了,其中<RewriterRule/>标签里面就是重写的一个模块,<LookFor/>里面的是重写后的地址,而<SendTo/>则是原地址。大家应该注意到了我写了2组<RewriterRule/>,其中第一组的是给单参数的地址用的,而另一组是给多参数动态文件用的。
相信大家如果用过在iis里面配置伪静态规则的话,那在webconfig里面配置规则自然不在话下,如果不会的话,就去找一些正则表达式的书看一下,不需要很精通就行
当然此方法有一些注意事项:
1.不能使用Windows身份验证用户权限. 应使用Form验证,在web.config配置为:<authentication mode="Forms" />
2.使用Request.ServerVariables["script_name"]获得的路径仍然是:ShowPlay.asp?vid=1
3.被重写的地址如果回发,重写将失效 显示的地址将是ShowPlay.asp?vid=1
4. 后缀名必须为.aspx.如果是其他自定义后缀名,如.net 请在iis将.net映射到aspnet_isapi.dll.这样.net请求才能
到达asp.net引擎.
ok了,没有提供组件的下载地址,但是在网上找到自己需要的资源也是学习的一种,名字有了,在当今的互联网时代,资源还能跑吗
附,有个小例子给大家看一下
五个页面
About.aspx body里面代码
Default.aspx页面,只有一句话不一样
这是主页,url是Default.aspx还是Default.html?<br/>
相信你能找到这句话,其他的复制过来就行
Detial.aspx页面
这是Detial页,url是Detial.aspx还是Detial.html?<br/>
Double.aspx
这是Double页,url是Double.aspx还是Double.html?<br/>
List.aspx
这是list页,url是List.aspx还是List.html?<br/>
他们的后置代码
webconfig按照上面的配置就行