0

我正在为多租户门户实现自定义登录页面,其中每个客户端都会根据其存储的设置获得不同的登录页面。
为此,我使用带有 URL 重写模块的 IIS 7.5。我的想法是捕获对“ http://portal.com/client1/
” 的请求并将它们重写为“ http://portal.com/login.aspx?client=client1 ”。

我正在努力的是匹配 URL 并提取“client1”位的正则表达式。

示例:
http://portal.com/pepsi ”=“ http://portal.com/login.aspx?client=pepsi
http://portal.com/fedex ”=“ http://portal. com/login.aspx?client=fedex "
" http://portal.com/northwind " = " http://portal.com/login.aspx?client=northwind "
" http://portal.com/microsoft/ " = " http://portal.com/login.aspx?client=microsoft "

因此,如果请求的 URL 在第一个“/”之后包含一个单词,则应该找到匹配项,并且无论是否有尾随“/”都有效。

"http://portal.com/clients/home.aspx" would be ignored by the rule.
"http://portal.com/clients/catalog" would be ignored by the rule.
"http://portal.com/products.aspx" would be ignored by the rule.
4

1 回答 1

1

假设:

  • 参数名称总是client
  • 并且您不关心之后是什么,/client1/那么您可以使用这个简单的模式来捕获 URL 的那部分,然后将其作为参数重复

这里:

<rewrite>  
  <rules>
     <rule name="client1 rewrite">
      <match url="^([^/.]*)[/]*$" />
      <action type="rewrite" url="login.aspx?client={R:1}"/>
    </rule>
  </rules>
</rewrite>

小提琴

这是有效的,因为在所有忽略列表中,“中间”都有一个斜杠,但斜杠在“过滤器”列表的结尾是可选的。{R:1}如果没有斜杠,那么将包含直到第一个斜杠或 url 结尾的所有内容。

于 2013-05-13T05:46:37.440 回答