云计算开发者社区

用新浪微博连接

一步搞定

楼主: 文峰

说明一下URL rewrite是如何工作的 方便大家写rewrite   [复制链接]

Rank: 1

发表于 2012-5-7 22:30:52 |显示全部楼层
我想把
http://noad.sinaapp.com/panlong/ ... ng/1234425572.shtml

rewrite成为:
http://noad.sinaapp.com/panlong/1234425572.shtml

这么写的:
handle:
- rewrite:  if ( !is_dir() && !is_file() && path ~ "http://noad.sinaapp.com/panlong/?hr=http://www.top10book.com/panlong/" ) goto "http://noad.sinaapp.com/panlong/"

始终不成功。
是我写错了?还是不支持外域的rewrite?

使用道具 举报

Rank: 9Rank: 9Rank: 9

发表于 2012-5-8 10:16:13 |显示全部楼层
崔崔凯凯 发表于 2012-5-7 22:30
我想把
http://noad.sinaapp.com/panlong/?hr=http://www.top10book.com/panlong/1234425572.shtml

1.应该使用相对路径
2.这个路径是is_file()是真
3.查询串不应该用path
要仔细看文档

使用道具 举报

Rank: 1

发表于 2012-5-8 10:55:29 |显示全部楼层
多谢指点,只是试了很久,还是不成功,能否写个范例?

handle:
- rewrite:  if ( query_string ~ "/panlong/?hr=http://www.top10book.com/panlong/" ) goto "/panlong/"

使用道具 举报

Rank: 9Rank: 9Rank: 9

发表于 2012-5-8 10:58:37 |显示全部楼层
/panlong/?hr=http://www.top10book.com/panlong/ 不用rewrite就是 /panlong/ 是要把hr这个参数删掉么  

rewrite的意图能 说明一下么?

使用道具 举报

Rank: 1

发表于 2012-5-8 11:02:22 |显示全部楼层
是希望删掉?hr=后面的参数

使用道具 举报

Rank: 9Rank: 9Rank: 9

发表于 2012-5-8 11:06:35 |显示全部楼层
请尝试
- rewrite:  if (path~"panlong/" && query_string ~ ".*www.top10book.com/panlong" ) goto "/panlong/"

使用道具 举报

Rank: 1

发表于 2012-5-8 11:22:59 |显示全部楼层
本帖最后由 崔崔凯凯 于 2012-5-8 11:31 编辑

用的您26楼提供的代码

http://noad.sinaapp.com/panlong/?hr=1234425568.shtml
访问这个地址提示SAE ERROR: INVALID HOST

http://noad.sinaapp.com/panlong/1234425568.shtml
这个提示404

希望能够将那个域名去掉,他还能跑的通就行

使用道具 举报

Rank: 9Rank: 9Rank: 9

发表于 2012-5-8 11:28:55 |显示全部楼层
明白了 你把rewrite前后搞颠倒了

使用道具 举报

Rank: 9Rank: 9Rank: 9

发表于 2012-5-8 11:33:34 |显示全部楼层
- rewrite:  if ( !is_dir() && !is_file() && path ~ "panlong/(.*)" ) goto "panlong/?hr=http://www.top10book.com/panlong/$2"

试试上面的rewrite 吧  如果想把盘龙也用正则替换用下面的rewrite

- rewrite:  if ( !is_dir() && !is_file() && path ~ "(.*)/(.*)" ) goto "$1/?hr=http://www.top10book.com/$1/$2"

使用道具 举报

Rank: 1

发表于 2012-5-8 11:34:47 |显示全部楼层
文峰 发表于 2012-5-8 11:28
明白了 你把rewrite前后搞颠倒了

囧……

- rewrite:  if ( query_string ~ "/panlong/" ) goto "/panlong/?hr=http://www.top10book.com/panlong/"

是改成这样吗?还是404,我再看看我哪写错了
http://noad.sinaapp.com/panlong/1234425568.shtml

使用道具 举报

Rank: 9Rank: 9Rank: 9

发表于 2012-5-8 11:38:43 |显示全部楼层
崔崔凯凯 发表于 2012-5-8 11:34
囧……

- rewrite:  if ( query_string ~ "/panlong/" ) goto "/panlong/?hr=http://www.top10book.com/ ...

看我29楼的回复

使用道具 举报

Rank: 1

发表于 2012-5-8 13:10:28 |显示全部楼层
文峰 发表于 2012-5-8 11:38
看我29楼的回复

成了,多谢您!!

使用道具 举报

Rank: 1

发表于 2012-6-27 09:30:16 |显示全部楼层
很不错,永久收藏了。

使用道具 举报

Rank: 8Rank: 8

发表于 2012-7-9 20:35:15 |显示全部楼层
本帖最后由 解品喜 于 2012-7-9 20:35 编辑
文峰 发表于 2012-3-26 17:00
由于rewrite模块的变动比较少 所以下面的规则虽然没有官方的支持 但也可以用
1.301转跳
  例如 如果a.com ...

峰哥,
?%{QUERY_STRING}  这个最好不要加 ,加了测试转发会多一串 ? 后的参数

类似这样: http://www.08nm.com/home.php?mod=space&uid=1&do=profile&mod=space&uid=1&do=profile

使用道具 举报

Rank: 9Rank: 9Rank: 9

发表于 2012-7-10 07:14:44 |显示全部楼层
解品喜 发表于 2012-7-9 20:35
峰哥,
?%{QUERY_STRING}  这个最好不要加 ,加了测试转发会多一串 ? 后的参数

试一下 [L,QSA,R=301]改成[R=301]

使用道具 举报

Rank: 8Rank: 8

发表于 2012-7-12 20:20:59 |显示全部楼层
文峰 发表于 2012-7-10 07:14
试一下 [L,QSA,R=301]改成[R=301]

这个可以.

使用道具 举报

Rank: 2

发表于 2012-7-17 23:23:22 |显示全部楼层
原来如此。。。

使用道具 举报

Rank: 1

发表于 2012-7-19 11:51:55 |显示全部楼层
文峰 发表于 2012-3-26 16:59
1.伪静态传参:    例如 将用户的访问的 aaa/bbb/ccc.html 路径 改写成 index.php?x=aaa&y=bbb&z=ccc2.将 ...

能解释一下这句吗: - rewrite:if ( path ~ "^(?!webroot/)(.*)" ) goto "webroot/$1?%{QUERY_STRING}"

?!webroot 是什么意思?

点评

文峰  判断一级目录不是webroot 不是的时候执行 搜一下"正则 前向否定"  发表于 2012-7-24 10:30:51

使用道具 举报

Rank: 2

发表于 2012-7-23 21:02:59 |显示全部楼层
Well done.

使用道具 举报

Rank: 1

发表于 2012-8-22 14:41:08 |显示全部楼层
http://cloudbbs.org/forum.php?mo ... p;extra=&page=1

文峰看看这个怎么解决啊
在同一个应用中,如何访问其他版本文件?
能否在默认版本的config中设置?
以绑定域名的目录形式或者单独设置域名指向不同版本?
从而实现访问其他版本文件的目的?

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|云计算开发者社区 ( 京ICP证000007-137 )

GMT+8, 2018-7-17 07:56 , Processed in 0.201976 second(s), Total 12, Slave 11 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部