伪静态规则:RewriteRule /news-(\d+)-.html /news/index\.aspx\?page=$1我的想法是这样的 :一个分页列表,前10页,生成静态页面,第11页用伪静态这个伪静态规则该怎么写呢,就是page/ 后面该怎么写呢 大于 10 的正整数的正则表达式该怎么写呢希望各位老大按照这个格式发上来,谢谢了RewriteRule /news-(\d+)-.html /news/index\.aspx\?page=$1

解决方案 »

  1.   

    没明白你的意思。。
    例如:第2页你说返回静态是 news-2.html 
    第12页你说返回伪静态 不还是 news-12.html 嘛。。
      

  2.   

    不是的,第二页返回的是news-2.html  第十二页访问的是 /news/index.aspx\?page=12
      

  3.   

    小于10的访问的是html,大于10的访问的是aspx
      

  4.   

    小于等于10的访问的是html,大于10的访问的是aspx,并且数字都是正整数
      

  5.   

    大于 10 的正整数的正则表达式分成
    1.两位正整数,以1起始且大于10的: ^1[1-9]$
    2.两位正整数,以2至9起始的:^[2-9]\d$
    3.三位或更大的正整数 ^[1-9]\d{2,}$综合得出
    ^((1[1-9])|([2-9]\d)|([1-9]\d{2,}))$
    如有错误或更简方式请指正
      

  6.   

    那你在程序中判断。。当大于10则跳转到相对应的aspx页面不可以么。。?
      

  7.   


    这个不行,小于等于10的照样可以访问aspx
      

  8.   

    RewriteRule /news-(^((1[1-9])|([2-9]\d)|([1-9]\d{2,}))$)-.html /news/index\.aspx\?page=$1这种规则不行,小于等于10的照样可以访问aspx
      

  9.   

    忘记替换规则了,替换规则以后,RewriteRule /news-(^((1[1-9])|([2-9]\d)|([1-9]\d{2,}))$)-.html /news/index\.aspx\?page=$1
    这个根本找不到页面 
      

  10.   

    一个大于10的正整数的正则表达式怎么写呢 [1-9]+\d{1,} 这个可以吗,好像不能排除10,不能排除10,俺忍了,[1-9]+\d{1,}这个正则表达式 两位数,三位数,N位数没问题吧??请教高手啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
      

  11.   

    RewriteRule /news-([1-9]+\d{1,})-.html /news/index\.aspx\?page=$1
      

  12.   

    /news-(1[1-9]|[2-9]\d+)-.html
    这个满足大于10
      

  13.   

    楼主要善于提问,把问题描述清楚。。
    首先你用的URL重写组件是什么?是微软的MSDNUrlRewriting还是ISAPI_Rewrite?
    然后你的URL格式:/news-2.html,你只说到了大于10的页码重写为/news/index.aspx?page=数字,那么前10页呢?保持/news-2.html真实URL不变是吗?如果你的前10页不重写的话,那么ISAPI_Rewrite 3的重写规则如下:RewriteRule /news-(?!10\.html$)([\d]{2,})\.html /news/index\.aspx\?page=$1  [NC]
    ##注意如果想在.html加querystring参数就去掉(?!10\.html$)中的$符号如果前10页也要重写,你就再加一条规则专门对应前10页的:
    RewriteRule /news-([\d]{1}|10)\.html 要重写的url [NC]
      

  14.   

    其实说简单点就是:浏览器看到的路径都一样news-(\d+)-.html ,前10页访问的是真实的html.
    10页以后访问的是真实路径:  /news/index.aspx\?page=$1
    花了点时间测试了下,应该可以:
    <Rewrite url="~/news_([1-9][0]?).htm" to="~/news_([1-9][0]?).htm"/>
    <rewrite url="~/news_(\d+).htm" to="~/index.aspx?page=$1"/>
    写2个规则,注意,这里1-10的必须放在前面,因为规则是放在前面先生效,所以,如果是new_(1-10).html访问的就是new_(1-10).html,如果大于10,在第一条规则找不到匹配,在往下找,刚好匹配第二条,访问aspx页面。
    希望对楼主有帮助,大家帮看看我问题,急啊。http://topic.csdn.net/u/20120203/16/22fd4a20-48ab-4bc7-888d-99aa0ccbae43.html?seed=1450491244&r=77458733#r_77458733
      

  15.   

    写错了个地方:<Rewrite url="~/news_([1-9][0]?).htm" to="~/news_([1-9][0]?).htm"/>
    改为:<Rewrite url="~/news_([1-9]|10).htm" to="~/news_([1-9]|10).htm"/>
    37楼也是正解,只不过要注意1-10的规则在前,然后不包括0
      

  16.   

    写错了个地方:<Rewrite url="~/news_([1-9][0]?).htm" to="~/news_([1-9][0]?).htm"/>
    改为:<Rewrite url="~/news_([1-9]|10).htm" to="~/news_([1-9]|10).htm"/>
    37楼也是正解,只不过要注意1-10的规则在前,然后不包括0
    整理一下:
    RewriteRule /news-([1-9]|10)-.html /news-([1-9]|10)-.html 
    RewriteRule /news-(\d+)-.html /news/index\.aspx\?page=$1
      

  17.   

    try...([1-9][0-9]{2,}|[2-9][0-9]|1[1-9])