【发布时间】:2020-03-16 15:56:56
【问题描述】:
我有一个关于在 IIS 中重写 url 的问题。这个问题有点像URL Rewrite rule - subfolder to query string value,但我没有根据我的需要定制答案。
我们有一个具有这种结构的 REST 接口:
http://rest.company.nl:8090/interface.svc/accountmanager?customer=TEST
现在我们想在 url 中添加一个公司子文件夹,并使用 URL Rewrite 来为所有公司使用相同的 rest 应用程序。它应该像这样工作:
- http://rest.company.nl:8090/interface.svc/company1/someresource?somequerystring
- ...
- http://rest.company.nl:8090/interface.svc/company9/someresource?somequerystring
应该映射到
- http://rest.company.nl:8090/interface.svc/someresource?somequerystring&company=company1
- ...
- http://rest.company.nl:8090/interface.svc/someresource?somequerystring&company=company9
我在 IIS 站点中编写了以下规则(Append Query String 和 Log rewritten URL 均已选中):
<rule name="Company specific REST" patternSyntax="Wildcard" stopProcessing="true">
<match url="*/interface.svc/*" />
<action type="Rewrite" url="http://rest.company.nl:8090/interface.svc/{R:2}?company={R:1}" logRewrittenUrl="true" />
<conditions>
</conditions>
</rule>
来自https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/url-rewrite-module-configuration-reference我了解到规则中的匹配将与url的路径进行比较。现在我的路径包含一个文件(interface.svc)而不是一个文件夹。这会导致问题吗?
当我输入公司特定的 URL 时得到的响应是 404,并且没有任何日志可以说明问题。
感谢您的宝贵时间!
【问题讨论】:
标签: rest iis url-rewriting url-rewrite-module