`
flex_莫冲
  • 浏览: 1092390 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

将URL的某个参数值的改成另一个参数

 
阅读更多
来自:http://www.meedee.cn/2016/06/21/%e5%b0%86url%e5%8f%82%e6%95%b0%e8%bd%ac%e6%8d%a2%e4%b8%ba%e5%8f%a6%e4%b8%80%e4%b8%aa%e5%8f%82%e6%95%b0%e5%81%9a301%e8%b7%b3%e8%bd%ac%e7%9a%84%e5%ae%9e%e7%8e%b0/

将URL的某个参数值的改成另一个参数。

例如

http://xxx/Finance/lists?iid=202&sid=26 要改成 http://xxx/Finance/lists?iid=202&sid=31

先考虑用Thinkphp的路由规则,发现不能实现。因为只是匹配$_SERVER['PATH_INFO']的数据,不能获取查询参数。见http://php.net/manual/zh/reserved.variables.server.php
'PATH_INFO'
包含由客户端提供的、跟在真实脚本名称之后并且在查询语句(query string)之前的路径信息,如果存在的话。例如,如果当前脚本是通过 URL http://www.example.com/php/path_info.php/some/stuff?foo=bar 被访问,那么 $_SERVER['PATH_INFO'] 将包含 /some/stuff。

如果非要实现,就要改TP的这个方法啦。

public function run(&$return){
// 优先检测是否存在PATH_INFO
$regx = trim($_SERVER['PATH_INFO'],'/');
if(empty($regx)) return $return = true;
// 是否开启路由使用
if(!C('URL_ROUTER_ON')) return $return = false;
// 路由定义文件优先于config中的配置定义
$routes = C('URL_ROUTE_RULES');
// 路由处理
if(!empty($routes)) {
$depr = C('URL_PATHINFO_DEPR');
// 分隔符替换 确保路由定义使用统一的分隔符
$regx = str_replace($depr,'/',$regx);
foreach ($routes as $rule=>$route){
if(0===strpos($rule,'/') && preg_match($rule,$regx,$matches)) { // 正则路由
return $return = $this->parseRegex($matches,$route,$regx);
}else{ // 规则路由
$len1   =   substr_count($regx,'/');
$len2   =   substr_count($rule,'/');
if($len1>=$len2) {
if('$' == substr($rule,-1,1)) {// 完整匹配
if($len1 != $len2) {
continue;
}else{
$rule =  substr($rule,0,-1);
}
}
$match  =  $this->checkUrlMatch($regx,$rule);
if($match)  return $return = $this->parseRule($rule,$route,$regx);
}
}
}
}
$return = false;
}
那就通过htaccess来实现吧

参考:https://wiki.apache.org/httpd/RewriteQueryString

用Modifying the Query String来改下。
最终的这样子

RewriteBase /
RewriteCond %{QUERY_STRING} (.*(?:^|&))sid=26|27((?:&|$).*) 
RewriteRule ^Finance/lists /Finance/lists?%1sid=31 [L,R=301]
分享到:
评论

相关推荐

    超级有影响力霸气的Java面试题大全文档

    例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望...

    下载chrome插件和离线安装CRX文件的方法

    1. 下载扩展程序/脚本程序至本地,然后将下载来的文件后缀名 *.crx 改成 *.rar,这样你就得到了一个压缩文件。 2. 右键解压这个压缩文件得到一个文件夹。 3. 在浏览器里打开扩展程序页面(chrome://settings/...

    下载chrome插件和离线安装CRX文件的方法.pdf

    下载扩展程序到本地,然后将下载来的文件后缀名 *.crx 改成 *.rar,得到一个压缩文件,然后右键解压这个压缩文件得到一个文件夹。在浏览器里打开扩展程序页面(chrome://settings/extensions),选中右上方开发人员...

    Scrapy框架中Spider的用法

    理解 Spider 类的操作方式,我们可以创建一个知乎的 Spider,通过 start_urls 的链接改成 `start_urls = ['http://www.zhihu.com/explore']`,并在 settings.py 里面加入 user-agent 信息,例如: ``` DEFAULT_...

    杰奇1.4 破解版+注册机

    这是针对上面的用户组来区分权限的,系统和每个模块都有一个权限设置栏目,您可以选择每个用户组是否有某个具体的权限。 5、区块管理 区块在网页总表现出来的就是一个方块栏目,象最新文章,点击排行之类。区块...

    杰奇1.4 破解版

    这是针对上面的用户组来区分权限的,系统和每个模块都有一个权限设置栏目,您可以选择每个用户组是否有某个具体的权限。 5、区块管理 区块在网页总表现出来的就是一个方块栏目,象最新文章,点击排行之类。区块...

    springmvc和strut2实现上传下载示例

    2. **控制器方法**:创建一个控制器方法,接收`MultipartFile`参数,这个参数可以用来处理上传的文件。例如: ```java @RequestMapping(value = "/upload", method = RequestMethod.POST) public String ...

    ZXV10 H608B 破解

     2、在U盘中建立一个文件夹:e8_Config_Backup 把“中兴H608B修改软件包”中的ctce8_H608B.cfg放入该文件夹,然后将U盘插入设备USB口,连接上网线(不是电话线),重新开关电源重启设备,等待2分钟左右。...

    杰奇1.3标准版

    4、权限设置 这是针对上面的用户组来区分权限的,系统和每个模块都有一个权限设置栏目,您可以选择每个用户组是否有某个具体的权限。 5、区块管理 区块在网页总表现出来的就是一个方块...

    利用phantomjs将web页面转Pdf

    windows版: 1、下载phantomjs,解压到某个目录。 2、将XXX\phantomjs\bin配置到环境变量中...ps:如果页面有滚动条显示不全,可以调整pdf\pdf.js 的分辨率或其他参数,使其适应,根据具体情况自行调整或改成自适应。

    WP主题:HotNewspro 2.72

    主题中有一个模板文件名称为:category-414.php,将后面的数字414改成某个分类的ID,再打开这个分类就会以通栏的样式显示该分类。 ■ 增强文章编辑功能 后台文章编辑时,实现所见即可所得,与前台浏览排版样式相同...

    测试培训教材

    一个好的测试管理工具应该能把以上几个阶段都管理起来。 测试人员每时每刻都在度量别人的工作成果,而测试人员的工作成果又由谁来度量呢?度量的标准和依据是什么呢?软件测试的度量是测试管理必须仔细思考的问题。...

    Java框架面试题总结

    - `<logic:notEmpty>`:判断一个值是否非空。 - `<logic:iterate>`:循环遍历集合。 **13. JSP中动态INCLUDE与静态INCLUDE的区别?** - **动态INCLUDE**:在运行时动态决定是否包含另一个页面,可以传递参数。 -...

    springmybatis

    请注意,这里面有一个方法名 selectUserByID 必须与 User.xml 里面配置的 select 的id 对应() 重写测试代码 程序代码 程序代码 public static void main(String[] args) { SqlSession session = ...

    奥瑞文网络培训系统(免费版2.2.7)

    将没填考试时长的试卷改成不限时 •15.修正部分媒体文件名无法播放问题 •16.修正基础数据(去掉旧版本演示数据) •17.修正课件图片媒体缩略图宽度的问题 •18.修正ADMIN_URL后台翻页无法调用的问题 •19.修正一些...

    Java面试框架高频问题2019

    **问题十六:如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这个对象?** - 使用`@ModelAttribute`将请求参数自动绑定到Java对象。 **问题十七:SpringMvc中函数的返回值是什么?** - ...

    奥瑞文在线培训系统服务器安装包v2.2.9

    拥有至少14种题型、3种组卷模式、32项考试发布参数、10多种统计方式、支持3种流行的课件格式、支持在线问答、68个功能模块。兼容IE6、IE7、IE8、IE9、360、FireFox、Chrome、Opera等所有浏览器。 产品应用: 奥瑞文...

Global site tag (gtag.js) - Google Analytics