当前位置:编程学习 > C#/ASP.NET >>

***** 关于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 --------------------编程问答--------------------
引用 1 楼 zhou_yi_feng 的回复:
实现这个效果的方法有很多,最简单的就是使用定制错误页,先写好一个错误提示的页面(假如说是404.htm),然后在web.config文件的<system.web></system.web>中写入如下代码即可:
       <customErrors defaultRedirect="DefaultError.htm"
       mode="On" redirec……

<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呢?
--------------------编程问答--------------------
引用 8 楼 wenhui7587 的回复:
redirectMode="ResponseRewrite" 
是mvc的配置方式吧,如果是传统的webform呢?


不是MVC特有的配置方式,就是传统的WebForm的配置方式。 --------------------编程问答-------------------- 大家帮助下,如何设置呢 
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,