日期:2014-05-19  浏览次数:20414 次

|M| 300分 学习URL改写参数出错,和相关知识 谢谢
http://www.cnblogs.com/teddyma/archive/2006/09/11/500790.html
我按照这个做了一个网站
Web.Config
-------------------------------------
<?xml   version= "1.0 "?>
<configuration>
    <configSections>
        <section   name= "UrlRewriteRules "   type= "NBear.Web.Modules.UrlRewriteRules,   NBear.Web "/>
    </configSections>
    <UrlRewriteRules>         &nbsp;&nbsp;
              <Rule   key= "^/(.+).html "   value= "~/default.aspx?id=$1 "   />
        &nbsp;&nbsp;   <Rule   key= "^/UrlRewriteSample/sample(.*).aspx "   value= "/UrlRewriteSample/Default.aspx?page=$1 "   />
        &nbsp;&nbsp;   <Rule   key= "^/UrlRewriteSample/section/(.*).aspx "   value= "/UrlRewriteSample/Default.aspx?section=$1 "   />
    </UrlRewriteRules>
    <system.web>
        <compilation   debug= "true ">
            <assemblies/>
        </compilation>
        <httpModules>
            <add   type= "NBear.Web.Modules.UrlRewriteModule,   NBear.Web "   name= "UrlRewriteModule "/>
        </httpModules>
    </system.web>
</configuration>
---------------------------------------------
在这里面有:
  <Rule   key= "^/(.+).html "   value= "~/default.aspx?id=$1 "   /> 改写
然后我在页面中输入:
http://localhost:1708/UrlRewrite/dd.html
本来改写应为
/UrlRewrite/default.aspx?id=dd  
但他动是
/UrlRewrite/default.aspx?id=urlrewrite/dd  

是哪里出错了

------解决方案--------------------
DAY DAY UP
------解决方案--------------------
不知道,帮你顶
------解决方案--------------------
不是很懂,随便说说,说错勿怪

改成这个试试
<Rule key= "^/UrlRewrite/(.*).html " value= "/UrlRewrite/Default.aspx?id=$1 " />

------解决方案--------------------
和楼主一样,学习中...
------解决方案--------------------
不知道,帮你顶

------解决方案--------------------
还需要在站点配置,添加.html的扩展名
------解决方案--------------------
学习!
------解决方案--------------------
怎么说呢
楼主应该去看看正则的语法
^/(.+).html 匹配 第一个字符是 /+N个任意字符+.html 这样的字符串
其中的(.+) 表示捕获匹配的 第一个字符是 /+N个任意字符+.html 这样的字符串
中 / 和.html 之间的字符串 也就是你后面的 $1代表的内容了
解释一下:
(.+)的意思是 在前面匹配的字符串
即上面的 第一个字符是 /+N个任意字符+.html 这样的字符串 中
捕获匹配到 .+ 这个正则表示的字符串的匹配项 并放入$0-$9 这个 "匹配 "结果集合中
. 表示的是任意的一个字符 + 表示前面的字符至少出现1次或N次 .+就表示任意字符串

你可以去看看
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/jscript7/html/jsjsgrpregexpsyntax.asp

如果你要捕获
http://localhost:1708/UrlRewrite/dd.html 中的 dd
应该写成
<Rule key= "^/UrlRewrite/(.+).html " value= "/UrlRewrite/Default.aspx?id=$1 " />