asp.net中URL重写(无后缀名的重写)
大家一定经常在网络上看到很多网站的地址后缀都是用XX.HTML或者XX.ASPX等类似静态文件的标示来操作的吧,那么大家有怀疑过他真的是一个一个的静态生成的文件么,静态文件的生成的优缺有好有坏,对于访问量很大的网站,利用静态文件可提高服务器的运行稳定和速度,坏处就是生成列表的时候会因为增加一条记录从而需要所有相关的列表进行重构,当然不排除有的公司已经攻克的这个问题,但对于大众程序员来说,他依旧是个问题,而且生成的化对于中小型网站也不一定会比动态的号,因为管理比较麻烦。
结构以上事实,然后伪静态技术产生了,规范的说就是URL重写技术,他对于ASPX格式支持最好,当然也可以重写HTML格式的文件,但这需要IIS的设置,相对比来说,ASPX格式的更方便,本站就是采用了该URL重写技术,这个技术优点显而易见:方便搜索引擎收录,方便查看,等等。那么接下来我们来看看如何配置他吧
首先、我们要用到URL重写组件:
其次、需要在WEB.CONFIG里面进行些设置:
1、在Web.Config的<system.web>和</system.web>添加以下节点:
<httpModules>
<configSections>
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引擎.
很多朋友应该看到过类似这样的地址:
其实这个也同样的重写,只是这个的使用必须要跟着建立相应的目录,譬如上面的这个地址,你必须要建立READ、2007、07、11、135645这些目录,虽然里面不需要存在文件,但建立还是有必要的
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="~/Default.aspx?ID=$1"
ignoreCase="true" />
网站->属性->目录->配置(
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="~/Default.aspx?ID=$1"
ignoreCase="true" />
可执行文件:c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
扩展名:.html
动作:限制为 GET,HEAD,POST,DEBUG
脚本引擎:选中
确认文件是否存在:不选
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="~/Default.aspx?ID=$1"
ignoreCase="true" />
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="~/Default.aspx?ID=$1"
ignoreCase="true" />
可执行文件:c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
确认文件是否存在:不选
重写规则:
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="~/Default.aspx?ID=$1"
ignoreCase="true" />