【版主、高手】过来看看-urlrewrite重写时地址带不确定个参数时的解决方法

zhhxx 2008-03-26 12:00:22
比如现在的访问的地址是 http://www.a.com/1A_b-3_c-1 转向的地址是 http://www.a.com/a.aspx?b=3&c=1,并且现在访问http://www.a.com/1A_c-1_b-3(注意参数顺序) 也要转向到http://www.a.com/a.aspx?b=3&c=1。这里的参数的顺序和个数都不固定,但要能转向到一个特定的页面并能正确的获取各个参数的值。
请问该如何解决。是在正则表达式中解决还是在urlrewrite.dll中解决。
...全文
200 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
帅帅123321 2008-03-26
  • 打赏
  • 举报
回复
string a=Request.Path;
写一个分析url的方法,
HttpContext myContext = HttpContext.Current;
//Rewrite the internal path
myContext.RewritePath("要转到的页面");
HttpContext.Current.RewritePath("("要转到的页面");
zhhxx 2008-03-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 live_7sky 的回复:]
我老大说 你描述 的不是很清楚,
需要看一下 网站。
[/Quote]
呵呵,网站还没放上去呢,我再描述一下吧
就是在做伪静态的时候有一个搜索页面,本来地址是http://www.a.com/seach.aspx?a=0&b=1&c=2&d=3 但有时候可能不需要所有的参数都传过来搜索,我现在将他重写伪http://www.a.com/S_a-0_b-1_c-2_d-3,这样做是可以正确转向的,但是如果我现在http://www.a.com/S_d-3_c-2_a-0_b-1(参数顺序换了)这样的话怎么能正确解析到http://www.a.com/seach.aspx这个页面下?用正则表达式的话这个正则表达式该怎么写?
live_7sky 2008-03-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 iuhxq 的回复:]
重写规则,写个通用的,比如 http://www.a.com/abc/1A_b-3_c-1
然后把abc/(.*?)重写到你的abc.aspx

然后在abc.aspx里处理路径中的参数。这个独立处理好了。
[/Quote]

在 abc.aspx 用正则表达式 去解析 ,或者用 查找字符串
因为 字符不错,效率差不多。
zhhxx 2008-03-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 iuhxq 的回复:]
abc/(.*?)

这个就差不多啊。
[/Quote]
我的意思是更好地怎么去解析实际的参数啊
live_7sky 2008-03-26
  • 打赏
  • 举报
回复
我老大说 你描述 的不是很清楚,
需要看一下 网站。
iuhxq 2008-03-26
  • 打赏
  • 举报
回复
abc/(.*?)

这个就差不多啊。
zhhxx 2008-03-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 anheizhizi 的回复:]
MARK一下.

楼主的URL规则一定么?
[/Quote]
参数的个数和顺序都是不确定的
zhhxx 2008-03-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 iuhxq 的回复:]
重写规则,写个通用的,比如 http://www.a.com/abc/1A_b-3_c-1
然后把abc/(.*?)重写到你的abc.aspx

然后在abc.aspx里处理路径中的参数。这个独立处理好了。
[/Quote]
兄弟的思路值得研究,但是 http://www.a.com/abc/1A_b-3_c-1 中1A_b-3_c-1参数如何解析才比较方便呢?用正则表达式行不?行的话该怎么写?
anheizhizi 2008-03-26
  • 打赏
  • 举报
回复
MARK一下.

楼主的URL规则一定么?
iuhxq 2008-03-26
  • 打赏
  • 举报
回复
重写规则,写个通用的,比如 http://www.a.com/abc/1A_b-3_c-1
然后把abc/(.*?)重写到你的abc.aspx

然后在abc.aspx里处理路径中的参数。这个独立处理好了。
zhhxx 2008-03-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 live_7sky 的回复:]
应该是在正则表达式解决。不过这种办法有局限性, 需要将每一种 顺序的规则写出来。
假如 参数有3 中顺序,就写 3 次 <RewriterRule>,不同的属性,就会找到相应的解法。

<RewriterRule>
<LookFor>~... </LookFor>
<SendTo>~.... </SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>... </LookFor>
<SendTo>.... </SendTo>
</RewriterRule>
<RewriterR…
[/Quote]
感谢兄弟回复。我是考虑用正则表达式的,问题就在于这些参数的不确定性,怎么去写符合规律的表达式啊,一个个穷举起来不太现实,如果做一个搜索的页面参数有10来个,怎么可能把所有的顺序都列举出来啊。有没有其他办法呢?
live_7sky 2008-03-26
  • 打赏
  • 举报
回复
应该是在正则表达式解决。不过这种办法有局限性, 需要将每一种 顺序的规则写出来。
假如 参数有3 中顺序,就写 3 次 <RewriterRule>,不同的属性,就会找到相应的解法。

<RewriterRule>
<LookFor>~...</LookFor>
<SendTo>~....</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>...</LookFor>
<SendTo>....</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>...</LookFor>
<SendTo>....</SendTo>
</RewriterRule>

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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