none
URLRewriter特殊字符处理问题 RRS feed

  • 问题

  • 在使用urlrewriter组件重写是,一些特殊字符处理不了,在javascript获取那个要传递的参数时,我已经用escape进行编码了,在web.config里面匹配这个参数的正则是这样的(\s\S)+ 还用了(\w*\s*\W*[^\n]*)都不行,每次只要我输入一下类似于*:|\"%#&?> <等字符的时候要么就是出现乱码,要么就是404等诸如此类的什么问题都有头都快搞炸了,请各位帮帮忙!!我和急,在线等。3ks
    2009年7月15日 3:17

答案

  • 楼主,你好

    如果仅仅是出现那些特殊字符会出现404这样的错误,我觉得这样的逻辑反而更合理点。
    我的理由如下,仅供参考。
    1.通常情况下出现你说的那些特殊字符没有意义.
    2.如果出现这样的字符,如“&”,这通常在url传参时表示两个参数。

    Microsoft Online Community Support
    2009年7月16日 2:19
  • 想要做  url rewrite  首先要帮正自己发出去的是合法url 以上是一点意见
    答案900, 目标五颗星 Aurvana Air, 音乐真的是随风飘来的 凉宫春日 永无止境的八月 你到底什么时候结束阿。。。。
    2009年7月17日 4:54
  •     <RewriterRule>
          <LookFor>~/news,([0-9a-zA-Z-]+),([0-9a-zA-Z-]+)\.aspx</LookFor>
          <SendTo><![CDATA[~/newslist.aspx?rootmenuurl=$1&menuurl=$2]]></SendTo>
        </RewriterRule>
    什么特殊字符?Url重写的时候建议只采用数字,字母和_

    guitarpark
    2009年7月21日 6:05
    版主

全部回复

  • 你好 请将你的url配置正则 以及url等贴出来 便于大家为你解决问题
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年7月16日 1:31
    版主
  • 在使用urlrewriter组件重写是,一些特殊字符处理不了,在javascript获取那个要传递的参数时,我已经用escape进行编码了,在web.config里面匹配这个参数的正则是这样的(\s\S)+ 还用了(\w*\s*\W*[^\n]*)都不行,每次只要我输入一下类似于*:|\"%#&?> <等字符的时候要么就是出现乱码,要么就是404等诸如此类的什么问题都有头都快搞炸了,请各位帮帮忙!!我和急,在线等。3ks
    <RewriterRule>   <LookFor>~/Kw-(\w*\s*\W*[^\n]*)</LookFor><SendTo>~/Product/ComparePrice.aspx?keyword=$1</SendTo></RewriterRule> 
    url是:../Kw-xxx
    2009年7月16日 1:42
  • 您好,

    config里面的配置是这样的:

    <RewriterRule>  
        <LookFor>~/Kw-(\w*\s*\W*[^\n]*)</LookFor>
        <SendTo>~/Product/ComparePrice.aspx?keyword=$1</SendTo>
    </RewriterRule> 

    如果url的keywrod是这样的话就会出问题:  ../Kw-&#%$#$><?%%   这些特殊符号的话就会出现404
    2009年7月16日 1:46
  • 你好 我刚才在RegexTester中测试了是可以匹配的

    Product/ComparePrice.aspx?keyword=&#%$#$><?%%



    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年7月16日 1:52
    版主
  • 正则我也用过几种方法都能够匹配,可是只要用到重写里面就会有问题,有些还是可以的,大概就只有这些不行  % & * | \ " : ? > < . 

    代码大概就是这样:
    <script type="text/javascript">
    function Rearch()
    {
    var kw = documnet.getElemenetById("txtRearch").value;
    if(kw!=null && kw!="")
    {
    location.href="../"+escape(kw);
    }
    }
    </script>

    config里面的配置是这样的:

    <RewriterRule>  
        <LookFor>~/Kw-(\w*\s*\W*[^\n]*)</LookFor>
        <SendTo>~/Product/ComparePrice.aspx?keyword=$1</SendTo>
    </RewriterRule>

    代码基本上就是这样,不知怎么的就是不行,连中问题都能匹配,还有一些乱七八糟的字符都行,就上面那几个顽固的东西不行,这的很纳闷~~~~~

    2009年7月16日 2:12
  • 楼主,你好

    如果仅仅是出现那些特殊字符会出现404这样的错误,我觉得这样的逻辑反而更合理点。
    我的理由如下,仅供参考。
    1.通常情况下出现你说的那些特殊字符没有意义.
    2.如果出现这样的字符,如“&”,这通常在url传参时表示两个参数。

    Microsoft Online Community Support
    2009年7月16日 2:19
  • 如果你能将你的重写规则描述更加清楚就更好了。比如说你的那个正则表达式要实现什么功能。
    Microsoft Online Community Support
    2009年7月17日 4:01
  • 想要做  url rewrite  首先要帮正自己发出去的是合法url 以上是一点意见
    答案900, 目标五颗星 Aurvana Air, 音乐真的是随风飘来的 凉宫春日 永无止境的八月 你到底什么时候结束阿。。。。
    2009年7月17日 4:54
  •     <RewriterRule>
          <LookFor>~/news,([0-9a-zA-Z-]+),([0-9a-zA-Z-]+)\.aspx</LookFor>
          <SendTo><![CDATA[~/newslist.aspx?rootmenuurl=$1&menuurl=$2]]></SendTo>
        </RewriterRule>
    什么特殊字符?Url重写的时候建议只采用数字,字母和_

    guitarpark
    2009年7月21日 6:05
    版主