来自: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]
分享到:
相关推荐
例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望...
1. 下载扩展程序/脚本程序至本地,然后将下载来的文件后缀名 *.crx 改成 *.rar,这样你就得到了一个压缩文件。 2. 右键解压这个压缩文件得到一个文件夹。 3. 在浏览器里打开扩展程序页面(chrome://settings/...
下载扩展程序到本地,然后将下载来的文件后缀名 *.crx 改成 *.rar,得到一个压缩文件,然后右键解压这个压缩文件得到一个文件夹。在浏览器里打开扩展程序页面(chrome://settings/extensions),选中右上方开发人员...
理解 Spider 类的操作方式,我们可以创建一个知乎的 Spider,通过 start_urls 的链接改成 `start_urls = ['http://www.zhihu.com/explore']`,并在 settings.py 里面加入 user-agent 信息,例如: ``` DEFAULT_...
这是针对上面的用户组来区分权限的,系统和每个模块都有一个权限设置栏目,您可以选择每个用户组是否有某个具体的权限。 5、区块管理 区块在网页总表现出来的就是一个方块栏目,象最新文章,点击排行之类。区块...
这是针对上面的用户组来区分权限的,系统和每个模块都有一个权限设置栏目,您可以选择每个用户组是否有某个具体的权限。 5、区块管理 区块在网页总表现出来的就是一个方块栏目,象最新文章,点击排行之类。区块...
2. **控制器方法**:创建一个控制器方法,接收`MultipartFile`参数,这个参数可以用来处理上传的文件。例如: ```java @RequestMapping(value = "/upload", method = RequestMethod.POST) public String ...
2、在U盘中建立一个文件夹:e8_Config_Backup 把“中兴H608B修改软件包”中的ctce8_H608B.cfg放入该文件夹,然后将U盘插入设备USB口,连接上网线(不是电话线),重新开关电源重启设备,等待2分钟左右。...
4、权限设置 这是针对上面的用户组来区分权限的,系统和每个模块都有一个权限设置栏目,您可以选择每个用户组是否有某个具体的权限。 5、区块管理 区块在网页总表现出来的就是一个方块...
windows版: 1、下载phantomjs,解压到某个目录。 2、将XXX\phantomjs\bin配置到环境变量中...ps:如果页面有滚动条显示不全,可以调整pdf\pdf.js 的分辨率或其他参数,使其适应,根据具体情况自行调整或改成自适应。
主题中有一个模板文件名称为:category-414.php,将后面的数字414改成某个分类的ID,再打开这个分类就会以通栏的样式显示该分类。 ■ 增强文章编辑功能 后台文章编辑时,实现所见即可所得,与前台浏览排版样式相同...
一个好的测试管理工具应该能把以上几个阶段都管理起来。 测试人员每时每刻都在度量别人的工作成果,而测试人员的工作成果又由谁来度量呢?度量的标准和依据是什么呢?软件测试的度量是测试管理必须仔细思考的问题。...
- `<logic:notEmpty>`:判断一个值是否非空。 - `<logic:iterate>`:循环遍历集合。 **13. JSP中动态INCLUDE与静态INCLUDE的区别?** - **动态INCLUDE**:在运行时动态决定是否包含另一个页面,可以传递参数。 -...
请注意,这里面有一个方法名 selectUserByID 必须与 User.xml 里面配置的 select 的id 对应() 重写测试代码 程序代码 程序代码 public static void main(String[] args) { SqlSession session = ...
将没填考试时长的试卷改成不限时 •15.修正部分媒体文件名无法播放问题 •16.修正基础数据(去掉旧版本演示数据) •17.修正课件图片媒体缩略图宽度的问题 •18.修正ADMIN_URL后台翻页无法调用的问题 •19.修正一些...
**问题十六:如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这个对象?** - 使用`@ModelAttribute`将请求参数自动绑定到Java对象。 **问题十七:SpringMvc中函数的返回值是什么?** - ...
拥有至少14种题型、3种组卷模式、32项考试发布参数、10多种统计方式、支持3种流行的课件格式、支持在线问答、68个功能模块。兼容IE6、IE7、IE8、IE9、360、FireFox、Chrome、Opera等所有浏览器。 产品应用: 奥瑞文...