是个伪静态的问题,非常奇怪,先看下:RewriteRule ^/tlist-q-(.*)\.html$ /tlist\.php\?q=$1
RewriteRule ^/tlist-q-(.*)-p-(.*)\.html$ /tlist\.php\?q=$1&page=$2RewriteRule ^/tlist-cid-(.*)\.html$ /tlist\.php\?cid=$1
RewriteRule ^/tlist-cid-(.*)-p-(.*)\.html$ /tlist\.php\?cid=$1&page=$2在看下PHP的代码:$q=var_request("q","");
$catid=var_request("cid","0");
$page=var_request("page","1");
echo 'q:'.$q.'<br>catid:'.$catid.'<br>page:'.$page;
$q为关键字
$catid为分类
$page为页数$q和$catid不可能同时出现,也就是说这页要么是关键字搜索,要么是分类搜索,不会出现在分类中按关键字搜索的可能,现在问题来了:当没有伪静态中的p参数(也就是php中的$page参数)时一切正常,只要一翻页就不行了
无论是$q还是$catid,在输出第二页,也就是当网址为:1、http://xxx.xxx.com/tlist-q-中国结-p-2.html  时, 显示$q参数为   -中国结-p-2   而page参数则取不到值
2、http://xxx.xxx.com/tlist-cid-0000001-p-2.html  时, 显示$catid参数为   -0000001-p-2   同样是page参数则取不到值总是取第一个参数,就把应该是第二个参数的内容连在一起就取回来了,而第二个参数则取不到值。真是奇怪了,查半天没看出来错误呀,上面也有其他搜索的页面,写法应该是跟这个一样,但是一切正常,就这页面不正常,求高手给看看!

解决方案 »

  1.   

    这个问题搞清楚了,还是伪静态的问题:RewriteRule ^/tlist-q-(.*)\.html$ /tlist\.php\?q=$1
    RewriteRule ^/tlist-q-(.*)-p-(.*)\.html$ /tlist\.php\?q=$1&page=$2注意看红色的地方,两条规则的红色部分重叠了,这就造成了第二条规则会不被解释,因为:http://xxx.xxx.com/tlist-q-中国结-p-2.html 这样的网址已经符合了第一条规则,按照第一条规则解释为 -q-后面的全部都为$1,所以就造成了q=中国结-p-2这样的结果。我的解决方法是去掉第一条规则,同时将入口网页的链接全部改为http://xxx.xxx.com/tlist-q-中国结-p-1.html或http://xxx.xxx.com/tlist-q-中国结-p-.html,这样就OK了我也没试下把两条规则颠倒一下次序是不是就可以了,知道的说下吧,随便近来人拿分了。