RewriteCond ^\/index.php.*$ [NC]
RewriteRule ^\/index.php?a=([0-9]+)&b=([0-9]{1})&c=([0-9]+)$ http://zufang.sslook.com/$1/$2/$3 [R=301,L]以上正则想做的是,访问网站网址为  http://zufang.sslook.com/index.php?a=1&b=2&c=3   自动跳转到页面  http://zufang.sslook.com/1/2/3
请教各位大侠,这个要怎么写?         写来写去都没有成功。

解决方案 »

  1.   

    我怎么觉你实现反了?
    是http://zufang.sslook.com/1/2/3跳到吧 http://zufang.sslook.com/index.php?a=1&b=2&c=3
      

  2.   

    RewriteCond %{QUERY_STRING} ^(.*)$
    RewriteRule ^([0-9]+)\/([0-9]{1})\/([0-9]+)$ /test.php?a=$1&b=$2&c=$3 [L,NC]
    给你测过了,管用,如假保换你把后面改为[R=301,L]  URL会跟着变,用我的,URL不变
      

  3.   

    你可能没看懂我要实现的动作,我解释一遍哈。
    如果你访问  http://zufang.sslook.com/index.php?a=1&b=2&c=3 这个网址
    那么,你的浏览器url就会出现http://zufang.sslook.com/1/2/3 这个网址。
    这个是我想实现的,把全部动态页面的url指向伪静态。
    但不管怎么说,都先谢谢你哈~
      

  4.   

    我弄反了?
    如果你访问 http://zufang.sslook.com/index.php?a=1&b=2&c=3 这个网址
    那么,你的浏览器url就会出现http://zufang.sslook.com/1/2/3 这个网址。
    这个是我想实现的,把全部动态页面的url指向伪静态。
    3楼我测试了很多次了,而且还是没有实现上边的功能,如果没有搞错的话,这段代码正好是反过来用可以的。
      

  5.   

    当然是你弄反了!
    应该是
    浏览器输入 http://zufang.sslook.com/1/2/3 这个网址
    就执行 http://zufang.sslook.com/index.php?a=1&b=2&c=3 这个网址url 重写的结果是供服务器用的,不会返回给浏览器地址栏如果你的页面中已经写入了动态url,那么应修改的的程序,在页面输出前将动态地址替换成静态地址
      

  6.   

    是吗,那是不是说反过来用的话是不可行的呢?只能在输入前处理?
    那如果说我使用GET传值,要怎么处理呢(遇到点小问题,如果action=/<?php $a>/<?php $b>/<?php $c>)好像第二次在传的时候就会出现http://zufang.sslook.com/1/2/3?index.php?a=1&b=2&c=3 这样的形式了。
    请教大家~
      

  7.   

    让我猜的话,也不是不可行,你真仔细考虑过非要这样实现不可吗?
    你了解一下后面的[L,NC]和[R=301,L]有啥区别,好像一个跳一个不跳
    说到底URL就是欺骗消费者的,你最终要跳的地址必须是这样的index.php?a=1&b=2&c=3
    因为look.com/1/2/3这根本就不是正确的路径会404的,所以你需要这样尝试
    1输入index.php?a=1&b=2&c=3跳到/1/2/3这是需要改变URL的,我记得测过是可以跳的
    2再接下来的条件中再写/1/2/3跳到php?a=1&b=2&c=3这个URL不改变
    我现在不清楚,这个URL又符合了条件一会不会跳来跳去,你若真有这需求,可以测试一下
    我过我提醒你,上面所有回复你都思考一下,是应该这样处理的,可以达到你的所有要求
    用户才不会手动输入?a=1&b=2&c=3,都是服务器的事,思考你就明白