***** 关于UrlRewrite *****
我在asp.net中用Intelligencia.UrlRewriter.dll进行url重写,碰到一个问题:如果随便输入一个url,比如:
http://www.test.com/afdfsa/
这种非法的url, 如何做到, url中的地址不变,
而页面显示自定义的错误html呢?
参考:http://wenzhou.ganji.com/easfasdf/ --------------------编程问答-------------------- 实现这个效果的方法有很多,最简单的就是使用定制错误页,先写好一个错误提示的页面(假如说是404.htm),然后在web.config文件的<system.web></system.web>中写入如下代码即可:
<customErrors defaultRedirect="DefaultError.htm"
mode="On" redirectMode="ResponseRewrite" >
<error statusCode="404" redirect="404.htm"/>
</customErrors>
注意,redirectMode必须设置为ResponseRewrite,而不能是ResponseRedirect,否则地址栏就会改变。
mode属性共有三个值,off是不使用错误页,on是完全使用错误页,还有一个RemoteOnly是指当在本机访问网站时不适用错误页,而在别的电脑上访问网站时显示错误页 --------------------编程问答-------------------- 上面写的, 发生了301转向,url地址变了. 现在要求url地址不变. --------------------编程问答-------------------- 简单的办法,自己写一个HttpModule,捕获异常后,直接输出相应的HTML --------------------编程问答--------------------
<customErrors defaultRedirect="heart.htm" mode="On" redirectMode="ResponseRewrite" >
<error statusCode="404" redirect="404.aspx"/>
</customErrors>
输入一个不存在的重写后的url, 页面却输出:
HTTP 错误 404.0 - Not Found
您要找的资源已被删除、已更名或暂时不可用。 --------------------编程问答-------------------- 我的web.config配置:
<system.web>
<pages enableEventValidation="false" enableViewState="false" viewStateEncryptionMode="Never" enableViewStateMac="false" controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" />
<globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8"/>
<compilation tempDirectory="c:\centaline" debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>
<customErrors defaultRedirect="heart.htm" mode="On" redirectMode="ResponseRewrite" >
<error statusCode="404" redirect="404.aspx"/>
</customErrors>
<machineKey validationKey="d41d8cd98f00b204e9800998ecf8427eb3112e7de0a1f03163b4fc88379a608d" validation="SHA1"/>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule,Intelligencia.UrlRewriter" preCondition=""/>
</modules>
<!---->
<defaultDocument>
<files>
<add value="index.aspx"/>
</files>
</defaultDocument>
</system.webServer> --------------------编程问答-------------------- 另外我的项目非mvc,是传统的webform --------------------编程问答-------------------- 我怎么没发现URL 重写的配置 --------------------编程问答-------------------- redirectMode="ResponseRewrite"
是mvc的配置方式吧,如果是传统的webform呢?
--------------------编程问答--------------------
不是MVC特有的配置方式,就是传统的WebForm的配置方式。 --------------------编程问答-------------------- 大家帮助下,如何设置呢
补充:.NET技术 , ASP.NET