Apache Rewrite匹配问号的问题

  在写RewriteRule准备匹配url中的问号及后面的参数时,怎么弄都无法成功。正则的写法经过测试是正确的,问号也已经转义\?,可还是不行。

  百度查询了下,RewriteRule 不会去匹配问号?后面的字符串,如下:

QSA|qsappend

When the replacement URI contains a query string, the default behavior of RewriteRule is to discard the existing query string, and replace it with the newly generated one. Using the [QSA] flag causes the query strings to be combined.

Consider the following rule:

RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]

With the [QSA] flag, a request for /pages/123?one=two will be mapped to /page.php?page=123&one=two. Without the [QSA] flag, that same request will be mapped to /page.php?page=123 - that is, the existing query string will be discarded.

所以,解决写法示例:

RewriteRule   ^(\w{2,30})/(.+)$        index.php?controller=$1&action=$2 [QSA]

可以把 /member/select?id=10 重写成 /controller=member&action=select&id=10

时间: 2024-10-12 13:32:30

Apache Rewrite匹配问号的问题的相关文章

APACHE REWRITE ? 匹配问号的写法

RewriteRule 不会去匹配 ? 后面的字符串,需要用RewriteCond来匹配 把 /abc?id=123  =>  /def.php?id=123 的写法: RewriteEngine on RewriteCond %{QUERY_STRING} ^id=(.+)$ RewriteRule ^/abc$ /def.php?sid=%1 [L] #启用重写后,避免静态资源访问出错 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQ

nginx 匹配问号 rewrite

今天同事问我 nignx跳转的问题匹配问号需要 需求是http://aaa.bbb.com/forum.php?id=123 跳转到 http://aaa.bbb.com/forum.php 在这里需要注意的是跳转前有问号,跳转后没有问号 这种情况我是用if解决的. nginx有一个变量是$query_string 它的用途就是定义问号以后的变量 在这个例子中它其实就是 id=123  这几个字符 开始配置的时候是 if ($query_string ~* "id=123$") {  

apache rewrite规则

在开篇之前:我想说这篇文章其实是我刚刚接触Rewrite的时候学习的文档,应属转载,但是在这里我不想写明原地址,原因是文章中大多数给出的配置命令经实验都是错误的.需要原文的可以在谷歌上搜索一下"Apache Rewrite 规则详解"好在我对正则表达式有所了解,把原文的代码都通过自己的理解改写了一下,并都能够达到题设的要求,并联想需求添加了例子.本文是经过我实验后修改有效的,如果还是出现500错误请去掉 # 及后面的注释(也许有些环境不支持中文注解),如果还是错误请在下面给我留言. 1

Apache Rewrite 规则详解

转自:http://www.cnblogs.com/top5/archive/2009/08/12/1544098.html 1.Rewrite规则简介: Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式.如果要想用到rewrite模块,必须先安装或加载rewrite模块.方法有两种一种是编译apache的时候就直接 安装rewrite模块,别一种是编译apache时以DSO模式安装

Apache Rewrite url重定向功能的简单配置

Rewrite url重定向就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范.平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等 1.Apache Rewrite的主要功能 就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范.平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等 2.Apache Rewrite的配置 Apache下的Rewrite配置主要有两种,一种是针对整个apache服务器的配置,此种配置的Rewrite规则是直接在httpd.con

Apache Rewrite实现URL的跳转和域名跳转

Apache Rewrite实现URL的跳转和域名跳转 Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基 于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式.如果要想用到rewrite模块,必须先安装或加载rewrite模块.方法有两种一种是编译apache的时候就直接 安装rewrite模块,别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块. 基于服务器级的(httpd.co

Apache Rewrite规则详解[转]

1.Rewrite规则简介:Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基于服务器级的(httpd.conf)和目录级的(.htaccess)两种方式.如果要想用到rewrite模块,必须先安装或加载rewrite模块.方法有两种一种是编译apache的时候就直接安装rewrite模块,别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块. 基于服务器级的(httpd.conf)有两种方法 一种是在http

apache rewrite 正则表达式基础

用了好几次rewrite,用的次数不是很多,每次都忘,都得重新上网上找一堆现看,总结一下,以免以后忘了 =====================分隔符===================== 注意以下几点: 1.加载rewrite模块,LoadModule rewrite_module modules/mod_rewrite.so 2.如果是用vhost里配置,则在vhost里打开RewriteEngine on(htaccess文件配置的方式没有用过) 用过的配置: 场景一:当域名是aaa

Apache rewrite地址重写

Apache-rewrite+13个经典案例Apache 重写规则的常见应用(rewrite)一:目的 如何用Apache重写规则来解决一些常见的URL重写方法的问题,通过常见的 实例给用户一些使用重写规则的基本方法和线索. 二:为什么需要用重写规则?一个网站,如果是长期需要放在internet上提供服务,必定会有不断地更新和维护,如临时转移到其它服务器进行维护,重新组织目录结构,变换URL甚至改变到新的域名等等, 而为了让客户不会因此受到任何影响,最好的方法就是使用Apache Rewrite