-
七 25
-
今天碰到了一个Apache的重写url的问题,需求是这样的,把
/abc/hello.html?page=2
rewrite成
/search.php?key=hello&page=2
我自己尝试写规则如下
^abc/(.+)\.html\?page=([0-9]+)$ /search.php/?key=$1&page=$2
这个规则怎么尝试都无法成功,就是不能匹配上那个问号.
实在搞不定只好利用网络请教高手了,记录过程如下
1.先到我加的几个qq群里问,自认为这种方式较快,因为这些qq群在线都是好几十人,随便碰到个会的就帮我搞定了.结果让我很失望,发了4个qq群,只有一个群里得到了答复,而且答案跟我的写法一样.
2.到百度知道提问,一个小时后得到一个答复跟我自己写的一样,仍然没搞定.
3.到国内一个很大的论坛发贴求助,只有一个人答复 "你悬偿点分嘛..重赏之下,必有勇夫",我以为帮助别人即使没有所谓的"分"也很快乐.
4.转战国外论坛,在webmasterworld以interrogation rewrite 为关键字搜索到了www.webmasterworld.com/apache/3375528.htm,虽然没有找到我要的答案,但是知道了apache的rewrite有个叫query_string的东西
5.在百度以关键词query string rewrite搜索到了我想要的结果http://stauren.net/log/4b8atjdnw.html 说白了就是一个参数的问题那就是[L,QSA]
摘抄一段那位网友的文章
-
<IfModule mod_rewrite.c>
-
RewriteEngine on
-
# Rewrite current-style URLs of the form 'index.php?q=x'.
-
RewriteCond %{REQUEST_FILENAME} !-f
-
RewriteCond %{REQUEST_FILENAME} !-d
-
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
-
</IfModule>
第1行: 如果服务器加载了rewrite模块,则执行如下规则
第2行: 打开改写引擎,不用动,加上就好。
第3行: 注释
第4行: RewriteCond 表示这是应用改写规则的条件,%{REQUEST_FILENAME}表示对请求的文件完整url进行判断,-f是表示这是普通文件,!表示非。这句的意思就是,如果请求的不是普通文件,则对url进行改写。
第5行: 基本同第4行,-d的意思是文件夹
第 6行:RewriteRule 表示这是改写规则,^(.*)$是一个正则,表示整个请求的url(在RewriteBase 之后的),index.php?q=$1是改写的样式。这里可能需要对正则熟一点才能看懂了。最后的[L,QSA]是flag,标志。L表示是last,针对这个url的最后一次改写,不再应用其他rule,QSA表示query string append,将查询字串加入原有查询字串之后。
一点感慨,国内的论坛交流分享的氛围远远不及国外的论坛,看看webmasterworld的回帖基本上就是一篇文章.
想到了一个小笑话:
一日早朝,王安石出列:“臣有奏,OOXX(以下省略1万字)。”刚说完身后跪下一片叫到:“臣沙发”“臣板凳”“臣地板”“臣顶”“臣也顶”……最后几人面带笑容不语,神宗见状怒击龙椅:“不许纯表情回帖。”
-
1 楼 jean
Post: 2009-09-01 11:20 下午
今天遇到同样的问题了。来交流下。
要把http://www.xxx.com/Lottery06/SSQ7LC/index.php?LotteryType=SSQ 变成
http://www.xxx.com/Lottery06/SSQ7LC/
下面是我的写法,
RewriteCond %{REQUEST_URI} ^/Lottery06/SSQ7LC/(.*)$ [NC]
RewriteCond %{QUERY_STRING} ^(LotteryType=SSQ)$ [NC]
RewriteRule ^(.*)$ http://www.okooo.com/Lottery06/SSQ7LC/ [R=301,L,QSA]
不过没有成功,比较郁闷
2 楼 老余
Post: 2009-09-02 9:50 上午
@jean:
Lottery06/SSQ7LC/这个路径本身是存在的啊,访问它就是访问http://www.xxx.com/Lottery06/SSQ7LC/index.php了吧,那后面的参数就没有用了
3 楼 jean
Post: 2009-09-02 10:43 上午
对,虽然没用但是仍然不想让它显示,seo有需求。
4 楼 老余
Post: 2009-09-02 10:48 上午
@jean
好办,不需要rewrite,在index.php里把LotteryType设定一个值
然后页面上直接写成http://www.xxx.com/Lottery06/SSQ7LC/就可以了
5 楼 jean
Post: 2009-09-02 11:23 上午
改代码不现实,研发要走一堆流程,我再研究下rewrite
6 楼 收购氯化银
Post: 2009-11-13 8:26 下午
可以交换链接吗?本站是回收银浆,收购银废料及回收黄金白银的,目前PR为3,如有意,可以做上后到我站留言,第一时间马上帮您做好!谢谢。
7 楼 QQ农场外挂
Post: 2009-11-18 7:56 下午
已经达到忘我的境界了,呵呵
8 楼 阿迪达斯鞋
Post: 2010-01-16 6:17 下午
留个脚印
9 楼 武汉论坛
Post: 2010-01-16 6:46 下午
好热闹
10 楼 攻略秘籍
Post: 2010-01-20 12:57 下午
留个脚印,新年快乐.
11 楼 bt核工厂
Post: 2010-01-26 3:17 下午
看到喜欢的了— 谢谢 –~
12 楼 淘宝网网上购物女裤
Post: 2010-01-27 11:44 上午
马上就要过年了。支持一下啊