首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >相似url的IIS管理器url规则

相似url的IIS管理器url规则
EN

Stack Overflow用户
提问于 2017-07-16 20:05:06
回答 1查看 48关注 0票数 0

我有两个http://...../m?PageView=View2TName=T1&AName=XYZhttp://...../m?PageView=View1&Language=English&AName=AAA和另一个urls。这两个urls都用于单独的部分/功能。但是由于参数的数量和模式是相同的,所以一个url起作用而另一个不起作用。

我想为两个相似的url编写url重定向和重写规则。我写的第一条规则如下。

代码语言:javascript
运行
复制
<rule name="RedirectUserFriendlyURL12" stopProcessing="true">
      <match url="^m/$" />
      <conditions>
        <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
        <add input="{QUERY_STRING}" pattern="^View=([^=&amp;]+)&amp;Language=([^=&amp;]+)&amp;AName=([^=&amp;]+)$" />
      </conditions>
      <action type="Redirect" url="m/{C:1}/{C:2}/{C:3}" appendQueryString="false" />
    </rule>
    <rule name="RewriteUserFriendlyURL12" stopProcessing="true">
      <match url="^m/([^/]+)/([^/]+)/([^/]+)/?$" />
      <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
      </conditions>
      <action type="Rewrite" url="m?View={R:1}&amp;Language={R:2}&amp;AName={R:3}" />
</rule>

另一个url具有相同数量的参数,但名称不同,如下所示。这是第二条规则。

代码语言:javascript
运行
复制
<rule name="RedirectUserFriendlyURL12" stopProcessing="true">
      <match url="^m/$" />
      <conditions>
        <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
        <add input="{QUERY_STRING}" pattern="^View=([^=&amp;]+)&amp;TName=([^=&amp;]+)&amp;AName=([^=&amp;]+)$" />
      </conditions>
      <action type="Redirect" url="m/{C:1}/{C:2}/{C:3}" appendQueryString="false" />
    </rule>
    <rule name="RewriteUserFriendlyURL12" stopProcessing="true">
      <match url="^m/([^/]+)/([^/]+)/([^/]+)/?$" />
      <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
      </conditions>
      <action type="Rewrite" url="m?View={R:1}&amp;TName={R:2}&amp;AName={R:3}" />
</rule>

当我在web.config中有上述两条规则时,其中一条url可以正常工作,即重新编译和重写,但另一条不起作用。

我如何区分这两个规则,使其适用于两个urls。

EN

Stack Overflow用户

回答已采纳

发布于 2017-07-17 18:59:58

我解决了我的问题。我只遵守一条规则,第一条。

但在我的控制器代码中,实际上我必须相应地映射参数。意味着我必须访问的不是语言参数值,我也只能访问TName -2的语言参数,因为当应用规则时,TName的值被传递到语言参数中。

我本可以使用两个规则,但之后我必须更改重定向目标URL。喜欢重定向

代码语言:javascript
运行
复制
^View=([^=&]+)&TName=([^=&]+)&AName=([^=&]+)$ to m/{C:1}/tname/{C:2}/{C:3}

然后重写回

代码语言:javascript
运行
复制
^m/([^/]+)/tname/([^/]+)/([^/]+)/?$ to m?View={R:1}&TName={R:2}&AName={R:3}.

但是我不想要上面的东西。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45128383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档