ISAPI Rewrite的问号匹配问题

tsenfine 2009-02-09 05:08:13
写rewriterule用到:
/?kkkkkk
要匹配到
/reg.php?id=kkkkkk
请问如何写正则规则?主要是这个问号
RewriteRule /?(.*)$ /reg\.php\?id=$1
RewriteRule /\?(.*)$ /reg\.php\?id=$1
RewriteRule /[?](.*)$ /reg\.php\?id=$1
都不行
...全文
1115 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
coogege 2012-08-09
  • 打赏
  • 举报
回复
哎,苦命的人啊,几年了,还是没解决,我也在苦恼
Adensky 2012-04-12
  • 打赏
  • 举报
回复
几年过去啦,不知道楼主现在解决没
whnczx 2010-05-06
  • 打赏
  • 举报
回复
t.com/pub/5000?totalresult=3&pageno=1 导航到 news_pub.php?totalresult=3&pageno=1&cid=5000

RewriteCond %{QUERY_STRING} ^totalresult=(\w+)&pageno=(\w+)$
RewriteRule ^pub/(\w+)$ news_pub.php?totalresult=%1&pageno=%2&cid=$1 [L]


自己研究下
fxs_2008 2009-10-20
  • 打赏
  • 举报
回复
tsenfine 2009-04-26
  • 打赏
  • 举报
回复
今天结贴了,这个问题还是没解决
archu 2009-02-10
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 tsenfine 的回复:]
是的,我的是最新版的ISAPI_Rewrite3,不过是免费版本的
IIS的这个问题难道没法解决吗?
[/Quote]
这个不是IIS的问题,而是ISAPI Rewriter的问题,你最好去它们网站上看看有什么方法吧。
总之,我在我这边测试的结果没有什么问题。而且,你在它自带的RegexTest.exe测试也不成功?我是成功的。
shagoo 2009-02-09
  • 打赏
  • 举报
回复
这是因为 url 里面 ? 后面的不被 apache 认为是 requested uri 的内容,所以你怎么写都无法取得。
建议你修改 url 格式:比如把 ? 去掉;或者改变获取方式:比如改成 RewriteRule /?(.*)$ /reg.php?id=$1&%{QUERY_STRING} 你看看 rewrite log 相信可以看出解决方案,希望对你有帮助 :)
archu 2009-02-09
  • 打赏
  • 举报
回复
上面的错了,应该是这样:
RewriteRule /\?(.*)$ /reg.php?id=$1 [I]
archu 2009-02-09
  • 打赏
  • 举报
回复
RewriteRule /?(.*)$ /reg.php?id=$1 [I]
tsenfine 2009-02-09
  • 打赏
  • 举报
回复
是的,我的是最新版的ISAPI_Rewrite3,不过是免费版本的
IIS的这个问题难道没法解决吗?
shagoo 2009-02-09
  • 打赏
  • 举报
回复
rewrite cond 是 condition 应该不是这个问题,这样现象估计是环境问题的可能最大。apache 是把 ? 后面的直接划到 %{QUERY_STRING} 里面了 不知道 ISAPI Rewrite 是什么规则 对了你们都是 ISAPI_Rewrite3 吗?
tsenfine 2009-02-09
  • 打赏
  • 举报
回复
我只加载了C:\Program Files\Helicon\ISAPI_Rewrite3\ISAPI_Rewrite.dll 这个模块,没有其他的filter
我也在IIS中新建了其他站点测试,仍旧不行,唉~
文档上面的确提到了用\转义,但我自己和其他人却都遇到这个问题,不知道是不是需要用到rewritecond这个东西
比如http://hi.baidu.com/lostdays/blog/item/247093cbfe1c20fb53664f1c.html 提到的,虽然是apache的,但似乎也差不多
archu 2009-02-09
  • 打赏
  • 举报
回复
大致看了一下,用"\"转义应该是没有问题的,你可以看参考文档:http://www.isapirewrite.com/docs/#RegexSynt

至于你遇到的问题,我现在所能怀疑到的只能是其它的ISAPI filter影响了ISAP_WRITER的运行。
你看看一下IIS Manager里面:Web sites->Properties, "ISAPI Filters"选项卡上面,是不是ISAPI_Rewrite在第一个
shagoo 2009-02-09
  • 打赏
  • 举报
回复
这样说来的确奇怪,建议你们把配置交换看看?
tsenfine 2009-02-09
  • 打赏
  • 举报
回复
2003上的6.0,我之前发的那些链接不知道你有没有看,也是我这样的问题:
http://topic.csdn.net/u/20080107/16/961809d2-f119-4f56-8205-1f56405f0eac.html?seed=426171994
http://www2.matrix.org.cn/thread.shtml?topicId=43975&forumId=19&fid=19
archu 2009-02-09
  • 打赏
  • 举报
回复
这就奇怪了,你IIS版本多少?
我是IIS6.0

至于问号的转义,我想应该没有问题。
tsenfine 2009-02-09
  • 打赏
  • 举报
回复
删掉default.asp不行,都删掉也不行,就是不启用默认文档也不行,到底是怎么回事啊?
archu 2009-02-09
  • 打赏
  • 举报
回复
我知道你什么原因了,你把default.asp从默认文档的配置里面删除掉,最好把所有的默认文档全部删掉。
我稍候给你一篇参考文章。
tsenfine 2009-02-09
  • 打赏
  • 举报
回复
我的ISAPI Rewriter配置跟你的一模一样的,但确实不行,这是什么原因?
用/?abc访问的日志里并无get到reg.asp,而是get到原来的default.asp

但规则如果改为
RewriteRule /t/(.*)$ /reg.php?id=$1 [I]
然后用/t/abc就可以访问到
/reg.php?id=abc
所以我的ISAPIRewriter配置并无错误,而且我觉得就是那个问号需要转义的问题
archu 2009-02-09
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 tsenfine 的回复:]
我既使用了ISAPIRewrite自带的RegexTest.exe测试,也用直接访问的方式测试了,都不行
RegexTest里测试直接就提示无法匹配

archu你可以写个localhost/reg.asp,
asp文件内容就一句:
<%=request.querystring("id")%>
正则表达式就用你写的(把php改为asp)
然后直接访问localhost/?abc看看能否显示出结果是:abc    ?

感谢关注这个问题
[/Quote]

当然没有问题了,从IIS日志就看得出来转向没有任何问题。你看看你的IIS日志显示什么。另外,我的ISAPI Rewriter的配置文件用的是
安装目录下的C:\Helicon\ISAPI_Rewrite\httpd.ini
因为我以前试过放在网站目录下不生效。
加载更多回复(8)

8,327

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 IIS
社区管理员
  • IIS
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧