【发布时间】:2013-01-06 14:54:15
【问题描述】:
您能否建议一个正则表达式来重写以下网址:
http://intranet/myApp/index.cfm/go:welcome.home/fruit:orange/car:ford/age:37/music:rock
到这里:
http://intranet/myApp/index.cfm?go=welcome.home&fruit=orange&car=ford&age=37&music=rock
它需要能够满足任意数量的不同定义的 url 参数。
目前,我只能设法匹配/替换第一个 url 参数。
<rule>
<from>/index\.cfm/go:([^:/]*){1}</from>
<to>/index.cfm?go=$1</to>
</rule>
不确定是否可以在它们存在的地方添加“:”到“=”和“/”到“&”的后续替换。
谢谢
【问题讨论】:
-
发件人:
/index\.cfm/go:([^:/]*)/fruit:([^:/]*)/car:([^:/]*)/age:([^:/]*)/music:([^:/]*)收件人:/index.cfm?go=$1&fruit=$2&car=$3&age=$4&music=$5,如果参数始终按该顺序排列,则应该可以工作。 -
您也可以重定向到一个 php 页面,该页面将在
$_GET查询字符串中使用这些变量值对重新重定向到该页面。 -
我能做的最好的事情是 (\b/(\w*):(\w*)\b)?(\b/(\w*):(\w *)\b)?被 &$3=$4&$6=$7 替换,这既混乱又有限,并且添加了尾随不需要的字符(我相信会被忽略)。
-
您对
<rule>的使用表明您无法控制转换的完成方式。您将 XML 提供给什么? 必须是正则表达式解决方案吗? -
我将正则表达式输入到 urlrewrite.xml 作为 urlRewriteFilter tuckey.org/urlrewrite 的一部分
标签: regex url-rewriting tuckey-urlrewrite-filter