rewrite 正则 301转向

sslook 2012-08-08 11:40:32
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


请教各位大侠,这个要怎么写? 写来写去都没有成功。
...全文
192 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
franzhong 2012-08-09
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

引用 8 楼 的回复:

当然是你弄反了!
应该是
浏览器输入 http://zufang.sslook.com/1/2/3 这个网址
就执行 http://zufang.sslook.com/index.php?a=1&b=2&c=3 这个网址

url 重写的结果是供服务器用的,不会返回给浏览器地址栏

如果你的页面中已经写入了动态url,……
[/Quote]
让我猜的话,也不是不可行,你真仔细考虑过非要这样实现不可吗?
你了解一下后面的[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,都是服务器的事,思考你就明白
sslook 2012-08-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

当然是你弄反了!
应该是
浏览器输入 http://zufang.sslook.com/1/2/3 这个网址
就执行 http://zufang.sslook.com/index.php?a=1&b=2&c=3 这个网址

url 重写的结果是供服务器用的,不会返回给浏览器地址栏

如果你的页面中已经写入了动态url,那么应修改的的程序,在页面输出前将动态地址替换成……
[/Quote]
是吗,那是不是说反过来用的话是不可行的呢?只能在输入前处理?
那如果说我使用GET传值,要怎么处理呢(遇到点小问题,如果action=/<?php $a>/<?php $b>/<?php $c>)好像第二次在传的时候就会出现http://zufang.sslook.com/1/2/3?index.php?a=1&b=2&c=3 这样的形式了。
请教大家~
xuzuning 2012-08-09
  • 打赏
  • 举报
回复
当然是你弄反了!
应该是
浏览器输入 http://zufang.sslook.com/1/2/3 这个网址
就执行 http://zufang.sslook.com/index.php?a=1&b=2&c=3 这个网址

url 重写的结果是供服务器用的,不会返回给浏览器地址栏

如果你的页面中已经写入了动态url,那么应修改的的程序,在页面输出前将动态地址替换成静态地址
sslook 2012-08-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

#3楼是对的,楼主弄反了
[/Quote]
我弄反了?
如果你访问 http://zufang.sslook.com/index.php?a=1&b=2&c=3 这个网址
那么,你的浏览器url就会出现http://zufang.sslook.com/1/2/3 这个网址。
这个是我想实现的,把全部动态页面的url指向伪静态。
3楼我测试了很多次了,而且还是没有实现上边的功能,如果没有搞错的话,这段代码正好是反过来用可以的。
franzhong 2012-08-08
  • 打赏
  • 举报
回复
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不变
franzhong 2012-08-08
  • 打赏
  • 举报
回复
我怎么觉你实现反了?
是http://zufang.sslook.com/1/2/3跳到吧 http://zufang.sslook.com/index.php?a=1&b=2&c=3
yiwusuo 2012-08-08
  • 打赏
  • 举报
回复
#3楼是对的,楼主弄反了
sslook 2012-08-08
  • 打赏
  • 举报
回复
自己在顶一个
sslook 2012-08-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

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

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧