iis重写保持路径(保留除文件名之外的所有内容)

时间:2017-08-10 13:03:48

标签: asp.net redirect iis url-rewriting

试图重新路线

  

https://xxxxx.aaa.bb.cc.dd/FOB_Main.aspx?FOB=O
  https://xxxxx.aaa.bb.cc.dd/FOB_Main_Rewrite.aspx?FOB=O

     

     

https://xxxxx.aaa.bb.cc.dd/testdev/FOB_Main.aspx?FOB=O
  https://xxxxx.aaa.bb.cc.dd/testdev/FOB_Main_Rewrite.aspx?FOB=O

     

     

https://xxxxx.aaa.bb.cc.dd/net/prodmirror/FOB_Main.aspx?FOB=O
  https://xxxxx.aaa.bb.cc.dd/net/prodmirror/FOB_Main_Rewrite.aspx?FOB=O

所以在aspx页面和查询字符串之前保留所有内容。并用新的aspx页面替换它。 (只替换文件名并保留其他所有内容)

这是我的尝试。

  <rule name="Fob_Main_decommisioned" stopProcessing="true">
    <match url="^fob_main.aspx" />
    <action type="Redirect" url="/FOB_Main_Rewrite.aspx" redirectType="Temporary" />
  </rule>

这适用于

  

https://xxxxx.aaa.bb.cc.dd/FOB_Main.aspx?FOB=O
  https://xxxxx.aaa.bb.cc.dd/FOB_Main_Rewrite.aspx?FOB=O

但它正在改变。

  

https://xxxxx.aaa.bb.cc.dd/testdev/FOB_Main.aspx?FOB=O
  https://xxxxx.aaa.bb.cc.dd/FOB_Main_Rewrite.aspx?FOB=O

我也尝试了

<rule name="Fob_Main_decommisioned" stopProcessing="true">
        <match url="^fob_main.aspx" />
        <action type="Redirect" url="{HTTP_HOST}/FOB_Main_Rewrite.aspx" redirectType="Temporary" />
      </rule>

但现在我正在

  

https://xxxxx.aaa.bb.cc.dd/testdev/xxxxx.aaa.bb.cc.dd/FOB_Main_Rewrite.aspx?FOB=O

我也尝试了

<rule name="Fob_Main_decommisioned" stopProcessing="true">
    <match url="(^.*)fob_main.aspx" />
    <action type="Redirect" url="/{R:1}FOB_Main_Rewrite.aspx" redirectType="Temporary" />
  </rule> 

但我回到了

  

https://xxxxx.aaa.bb.cc.dd/FOB_Main_Rewrite.aspx?FOB=O

(它正在删除testdev)

有趣的是使用这个规则

 <rule name="Fob_Main_decommisioned" stopProcessing="true">
         <match url="(^.*)fob_main.aspx" />
        <action type="Redirect" url="/{R:1}FOB_Main_Rewrite.aspx" redirectType="Temporary" />

并直接在浏览器中输入

  

https://xxxxx.aaa.bb.cc.dd/testdev/testdev/FOB_Main.aspx?FOB=O

将我引导到我想去的页面。

  

https://xxxxx.aaa.bb.cc.dd/testdev/FOB_Main_Rewrite.aspx?FOB=O

1 个答案:

答案 0 :(得分:0)

此规则看起来是正确的(如果您将此规则放在根应用程序中):

<rule name="Fob_Main_decommisioned" stopProcessing="true">
   <match url="(^.*)fob_main.aspx" />
   <action type="Redirect" url="/{R:1}FOB_Main_Rewrite.aspx" redirectType="Temporary" />
</rule> 

如果您将其放在子应用程序中,此规则将起作用:

<rule name="Fob_Main_decommisioned" stopProcessing="true">
    <match url="^fob_main.aspx" />
    <action type="Redirect" url="FOB_Main_Rewrite.aspx" redirectType="Temporary" />
</rule>

很可能你回到https://xxxxx.aaa.bb.cc.dd/FOB_Main_Rewrite.aspx?FOB=O,因为浏览器之前缓存了错误的重定向。你能不能做这个步骤:

  1. 应用此规则
  2. 在浏览器中清除缓存
  3. 尝试打开https://xxxxx.aaa.bb.cc.dd/testdev/FOB_Main.aspx?FOB=O