我在为IIS 7中的URL重写正则表达式模式时遇到问题。我直接在我的web.config文件中完成这项工作,我需要帮助的模式描述如下:URL重写多个参数
传入的URL,如以下几点:http://www.domain.com/user/<USERNAME>/subscribers
需要重写的文件:http://www.domain.com/subscribers.php?u={R:1}
凡{R:1}
的含义,因为它会在web.config文件相同,并应等于通过了<USERNAME>
值在URL中。
我一直在寻找几个小时今天,还有几个昨天,但没有发现什么建议。我对Regex并不是很熟悉,但已经学会了很多尝试去解决这个问题,但无济于事。
在此先感谢!
更新
- 的
<USERNAME>
值可以包含任何字母数字字符(0-9,A-Z,和A-Z)以及下划线和句号。 - 我已经尝试了各种不同的模式与重写模块。我开始与一个是这样的:
^user/(.+)/subscribers$
XML为重写的整个数据块是这样的:
<rule name="User Subscribers">
<match url="^user/(.+)/subscribers$" />
<action type="Rewrite" url="subscribers.php?u={R:1}" />
</rule>
该格式适用于该重写的休息,但有一次我试着坚持静态,正则表达式模式之后的非正则表达式文本,我无法让它工作。问题归结为:<USERNAME>
的值被设置为我想要的值,重写的部分被追加到最后。
你能定义''吗? (字符数,什么字符...)。你有没有尝试过任何与重写模块呢? –
cheesemacfly
2013-05-12 16:19:23
@cheesemacfly我会用更多的信息更新我的问题。感谢您的建议! – 2013-05-12 16:21:06
读你最后一次编辑,我认为你应该使用'^ user /(.+)(/ subscribers)$'这样的方式,'/ subscribers'将成为'R:2'后面引用的一部分,而不是在'R:1'结尾(我现在没有IIS访问权限,无法测试...) – cheesemacfly 2013-05-12 16:45:54