是的 浏览器不发送但接受.这个是我的错误.
经过url:的urlmatch 的$jump[实质上是location]处理后 服务器发送的#锚点会被删除
表现就是不会再有效.
不是"难怪我老说能用能用",而是确实可以用..而且location:的#lastpost也真实的去掉了....
在这里我要说:
Location规则去掉#lastpost,这个也能转用URL规则去掉?
开始想说,是的,能!
仔细测试,结论是,看情况.
我发现我回这些似乎根本不是你想知道的....写完看才发现,之前好像没明白你意图!问题是你给的例子就有问题....
而且一般情况下这种服务器都是用location的吧....
这个得看你说的转用URL规则是什么意思:
是内部headerURL: ?
还是url match?
location:头,是headermatch用.
这个无法用url match;
URL:头,是可以用别的方式的.
URL:头用urlmatch也是不可行的
但是,有别的实现.
针对你那个
Code: Select all
http://bbs.zb7.com/forum.php?mod=redirect&tid=498279&goto=lastpost
具体的: 可以捕获# 只捕获#前的
Code: Select all
[HTTP headers]
In = TRUE
Out = FALSE
Key = "URL: zb7"
Match = "$IHDR(Location:\1#)$ALERT(\1)"
Replace = "$JUMP(http://\h/\1)"
但是,但是啊! 确实是实现了URL:头替代Location:的捕获. ^o^ 只是这种用法 我是很汗的 - -!
我也晕....如果不是location的跳转,直接链接就是锚点...
就是说 一个链接 假设是
Code: Select all
<a href="http://bbs.zb7.com/thread-498279-1-1.html#lastpost">某帖子</a>
Web的文本替换大概是最好的办法
原因是 原地址不发送# 跳转的还是没# 无限重定向循环....
如果本来没有的需要添加#lastpost ,也只能在headerreplace添加....
#是浏览器决定的....用了两次跳转也避不过.
失败的规则如下,不用试验了,没用的
只要还是原地址,就没法折腾.就算后面加&也不行
$tst只在当前连接有效.
Code: Select all
[HTTP headers]
In = FALSE
Out = TRUE
Key = "Lo : zb7 www"
URL = "\1:proxhehe$SET(prox=\1)"
Replace = "$GET(prox)"
In = TRUE
Out = FALSE
Key = "Location: zb7 lo"
URL = "$OHDR(Lo:(\w)\1)$ALERT(\1) $JUMP(http://\1&proxJ)"
In = FALSE
Out = TRUE
Key = "URL:ZB7 zzz"
URL = "(^$OHDR(Lo :b))(bbs.zb7.com/forum.php?mod=viewthread)\0(\w)\1&(^*proxJ*) $JUMP(http://\0\1:proxhehe)"
只不过不是thread-498279-1-1.html 而是
Code: Select all
mod=viewthread&tid=498279
正常来说一般都能这么干.
这两个图本来是说可以,但是后来发现问题不对.... 括号内是"子表达式".prox会考虑先满足子式.
后面没跟东西,没限制匹配到什么结束,那就匹配完了.问题是完了看看,后面当然是什么都木有了....后面跟个/,碰到/时候会去后面看看...不成就继续再第二个/....
具体回溯基本就是这样吧,没有资料只能从表现来推测.
这里是个坑