一,Rewrite重写时带“?”(问号)参数的传递

很多人都会遇到需要将网站以前的旧URL转换到新版本的新URL来,但是有一些带有参数的地址由于涉及到参数名的变更,需要通过伪静态的方式实现跳转。但Apache和Ngnix的方法是不支持带参数的URL地址重写的(即:RewriteRule不会去匹配“?”后面的字符串的,需要用RewriteCond来匹配)。

例如:把 /abc?id=123 重定向到 /def.php?id=123 的写法:

方式一:

RewriteEngine on

RewriteBase /

RewriteCond %{QUERY_STRING} ^id=(.+)RewriteRule ^/abc /def.php?sid=%1 [L]

#注释1:RewriteCond %{QUERY_STRING} ^id=(.+)$ ,得到url中的变量,并通过“%N”的方式获取(参数名可以重写,而且参数值可以匹配)

#注释2:RewriteCond 里面需要提取的值可以用 %N 进行反向引用值,而RewriteRule里面还是需要用$N的来反向引用值

方式二:

RewriteEngine on

RewriteBase /

RewriteRule ^/abc$ /def.php [L,QSA]

#注释1:[QSA]表示保留重写url时“?”后面的参数(但参数名不可以重写,只会原样的保留)

官方文档解释(查询字符串):

Pattern不会按照查询字符串进行匹配。为了达到这个目的,你必须使用一个带有% {QUERY_STRING}变量的RewriteCond指令。当然,你也可以在替换字符串中创建包含查询字符串的URL:在替换字符串串中使用问号,以标明其后的部分应该被重新注入到QUERY_STRING中。而要删除一个已有的请求串,则可以用问号来终结替换字符串。为了联合新旧查询字符串,请使用[QSA]标志。

二、apache rewrite 终结篇:apache %{QUERY_STRING}

1.n取得第n个参数值

RewriteRule ^sss/(.*)/(.*) zdz/index.php?arg1=1&arg2=2

2.query_string(%{QUERY_STRING}后为匹配的正则)

URL参数(Query String)是URL里面“?”后面的部分,它通常用于传输参数给CGI脚本或者其它动态页面。在Apache中,该值存储在环境变量QUERY_STRING中(在PHP中,可以通过_SERVER['QUERY_STRING']访问到)。

在Apache中,大多对URL进行操作的指令,如、Redirect、Alias和RewriteRule,都不能直 接访问该数据;不过,mod_rewrite模块却可以对URL参数进行添加、删除和修改。其中的关键就是使用RewriteCond来匹配% {QUERY_STRING}变量,如果需要的话,还可以使用[QSA]标志来附加URL参数。

eg.1

如果 http://piaoyun.cc/rewrite/jeecn.zdz?par=helloforbworld 中的 query_string 包含字符串forb ,则禁止访问

RewriteCond %{QUERY_STRING} forb

RewriteRule ^(.*)\.(.*) preg.php?%{QUERY_STRING} [F]

eg.2

通过[QSA]标志保留原有URL参数的同时,在后面增加新的URL参数:param=value

RewriteRule ^/page /page?param=value [QSA]

eg3.

当URL参数包含字符串parm时

将URL:http://jeecn.com/ask?param=value 重写为: http://jeecn.com/answer?param=value

RewriteCond %{QUERY_STRING} parm

RewriteRule ^/ask /answer

eg4.%n反向引用

1)当访问 /path 时,将字符串 parm修改为 showparm

RewriteCond %{QUERY_STRING} ^(.*)parm(.*)RewriteRule /path /path?%1showparm%2

上面的%1和%2是反向引用,来自之前的RewriteCond中正则表达式的匹配结果

2)将http://jeecn.com/path?key=value 转换为: http://piaoyun.cc/path/key/value

RewriteCond %{QUERY_STRING} ^(\w+)=(\w+)

RewriteRule ^/path /path/%1/%2?

php 正则替换url参数,url Rewrite 重写时带“?”(问号)参数的传递相关推荐

  1. django-反转路径时带上参数-适用于路径中通过命名分组的形式来捕捉参数的情景

    路径中有参数的时候 article_id 就是路径里的参数 问题 如何通过别名来反转得到路径呢 注,路径中有一个动态的参数哦 路径反转带上参数(关键词方式) reverse(别名,kwargs={形参 ...

  2. 拦截地址栏参数_selenium操作chrome时的配置参数

    参数说明: about:version - 显示当前版本 about:memory - 显示本机浏览器内存使用状况 about:plugins - 显示已安装插件 about:histograms - ...

  3. curl发送post请求带Json参数、发送get请求

    文章目录 curl发送post请求带Json参数 curl发送get请求带参数 curl 参数 curl发送post请求带Json参数 1:linux下执行curl命令发送post请求 curl -X ...

  4. 织梦系统基本参数php,织梦后台系统基本参数新增的变量数据库修改

    织梦后台系统设置---系统基本参数里面除了系统自带的参数之外,很多站长为了效果也增加了不少自定义的变量,但是如果有的变量不需要,或者是更换模板变量功能没起到作用,就需要修改自定义变量. 修改自定义变量 ...

  5. range函数python三个参数_range()函数三种参数的用法

    第8篇分享 range()是python的内置函数,用的地方挺多的,目前我经常会在for循环中作为循环的次数来使用,其实range()的用法不仅仅如此,本文给大家介绍下range()函数的三种参数的基 ...

  6. urlencode quote unquote (url 中带中文参数)

    目录: urlencode & quote & unquote (url 中带中文参数) python httplib urllib urllib2区别(一撇) 当url地址含有中文或 ...

  7. 使用jquery获取url及url参数的方法

    [开发笔记]-使用jquery获取url及url参数的方法 使用jquery获取url以及使用jquery获取url参数是我们经常要用到的操作 1.jquery获取url很简单,代码如下: windo ...

  8. nginx配置url中带问号的rewrite跳转

    今天收到一个需求,要将一个带查询参数的url跳转到另外一个静态url,安装常规的rewrite规则,如: rewrite ^/a.html?id=67$ http://zt.epython.cn/20 ...

  9. 使用jquery获取url及url参数的方法及定义JQuery扩展方法

    1.jquery获取url很简单,代码如下: window.location.href; 其实只是用到了javascript的基础的window对象,并没有用jquery的知识. 2.jquery获取 ...

最新文章

  1. python爬取本地天气信息_用Python写一个爬取中国天气网的终端版天气预报爬虫
  2. 谈判专家(东方化改题+懒得看标程)
  3. Android使用Retrofit2.0和RxJava2.0处理网络请求
  4. ftl转PDF服务器上中文不显示,解决Linux中swftools转换中文pdf时出现乱码问题
  5. 谷歌开源语音识别AI技术,可以从人群中区分每个人的发言
  6. HTML a 标签的伪类
  7. 苹果Mac微软office办公套件:Microsoft 365
  8. QtextEdit自定义右键菜单
  9. Acronisnbsp;Truenbsp;Image进行…
  10. DataHunter完成千万级A轮融资 打造数据协作平台
  11. 免费录屏软件有哪些?录屏软件下载,认准这3款软件
  12. 邮箱邮件收发件服务器怎么设置?
  13. 模拟测静电场实验报告
  14. python之tkinter Pack使用
  15. 关于Unity 5.x Lightmap Shader 编译过慢的分析
  16. 或用新政策按揭和省钱
  17. JavaScript实现拖动滑块验证(方法已封装)
  18. n3k配置vpc是否还需要配置hsrp_HSRP协议详解:配置HSRP实现网关的冗余备
  19. c语言的jmp_buf函数
  20. Java工作笔记/Java面试题/Java八股文/Java常用API

热门文章

  1. redshift和谐版安装
  2. 小程序之onHide()和onUnload()
  3. 解决vs2005“无法附加,绑定句柄无效”问题
  4. php页面如何加入滚动广告,前端页面内实现左右摇摆广告
  5. 景联文科技:深度探究自动驾驶重要方向——车路协同
  6. 《大数据大创新:阿里巴巴云上数据中台之道》-读书笔记
  7. Mysql数据库高CPU问题定位和优化
  8. 夺命金背后的真实香港情况
  9. Python:突然发现好看壁纸的都在某度图片库了,这还爬什么壁纸网站?
  10. 团队开发环境一致性性要求