免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 16677 | 回复: 9
打印 上一主题 下一主题

请问如何重定向带request参数的url? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-22 16:21 |只看该作者 |倒序浏览
5可用积分
本帖最后由 kingsu 于 2010-10-22 16:41 编辑

比如原来的是
http://old.com/handle.php?type=aaa&key1=111&key2=222
http://old.com/handle.php?type=bbb&key1=111&key2=222

我想先判断type类型
if(_REQUEST["type"] == "aaa")
    重定向到http://new1.com/handle?key1=111&key2=222;
else
    重定向到http://new2.com/handle?key1=111&key2=222;

请问如何搞比较好?

是不是直接header("Location: http://new1.com/handle?key1=111&key2=222")?

还有如何获取所有_REQUEST的字符串, 就是得到原来url的"type=aaa&key1=111&key2=222"?

最佳答案

查看完整内容

回复 9# kingsu curl差不多就是这样子.curl就是一个模仿浏览器的东西

论坛徽章:
0
2 [报告]
发表于 2010-10-22 16:21 |只看该作者
回复 9# kingsu


curl差不多就是这样子.curl就是一个模仿浏览器的东西

  1.                 $url = $server2Url;
  2.                 $data = array('entity',$entityValue);
  3.                 $ch = curl_init();
  4.                 curl_setopt($ch, CURLOPT_URL, $url);
  5.                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  6.                 curl_setopt($ch, CURLOPT_POST, 1);
  7.                 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  8.                 curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
  9.                 curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
  10.                 $result = curl_exec($ch);
  11.                 curl_close($ch);
  12.                 return $result;
复制代码

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
3 [报告]
发表于 2010-10-22 16:28 |只看该作者
既然已经根据type做了判断要跳到哪个地址,就没有必要再加type了。减少传输里。建议直接使用key1=这样的串。使用header。

论坛徽章:
0
4 [报告]
发表于 2010-10-22 16:32 |只看该作者
回复 2# renxiao2003


    我原来的url是个 http post 操作 后面不但有req参数还有设置的setEntity数据... 怎么才能重定向时也带上这些数据呢?

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
5 [报告]
发表于 2010-10-22 16:51 |只看该作者
回复 3# kingsu


    因为重定向的时候,不能POST数据,所以只能把前面的数据取过来,使用GET方式(即在网址后面加上数据)传递。参见:http://bbs.chinaunix.net/viewthr ... page=19#pid12953380   (不一定是最准确的,但一定可以实现你的功能)

论坛徽章:
0
6 [报告]
发表于 2010-10-22 17:01 |只看该作者
1.是不是直接header("Location: http://new1.com/handle?key1=111&key2=222")?

2.还有如何获取所有_REQUEST的字符串, 就是得到原来url的"type=aaa&key1=111&key2=222"?

3.我原来的url是个 http post 操作 后面不但有req参数还有设置的setEntity数据... 怎么才能重定向时也带上这些数据呢?


1.是
注意调用header("Location: http://new1.com/handle?key1=111&key2=222")之后需要加exit(0)之类的退出代码,不然后面的php代码还会执行。

2.用$_SERVER['QUERY_STRING']获取。

3.重定向无法post,只能放url后面带过去。

论坛徽章:
0
7 [报告]
发表于 2010-10-22 17:02 |只看该作者
我的客户端使用java做的, 创建一个post对象后, 不但有query 键值对, 还有entity, 是通过setEntity(String str)设置的....
版主给我的方法好像没有对entity的处理啊?

论坛徽章:
0
8 [报告]
发表于 2010-10-22 17:03 |只看该作者
回复 5# starzhestarzhe


    那个entity是个字符串数据, 没有key啊, 不能有&key=value副到url后面啊, 改怎么搞呢?

论坛徽章:
0
9 [报告]
发表于 2010-10-22 17:16 |只看该作者
回复  starzhestarzhe


    那个entity是个字符串数据, 没有key啊, 不能有&key=value副到url后面啊, 改 ...
kingsu 发表于 2010-10-22 17:03



    没太明白你的意思,估计你是想走重定向的url把你那个entity传过去并获取数据,如果这样那就在你post的那个url里用socket或curl吧

论坛徽章:
0
10 [报告]
发表于 2010-10-22 17:24 |只看该作者
回复 8# starzhestarzhe


    是这个意思, 我就是想把发给server1 的请求和数据 重定向到server2, 处理结果数据还是返回原来的client, 不知道socket和curl怎么用....有米有简单的例子...给个链接..
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP