簡體   English   中英

帶有查詢字符串的.aspx網址無法在沒有.aspx的情況下重定向到url-我也想在新url上保留查詢字符串

[英].aspx url with query string is unable to redirect to url without .aspx - Also i want to retain the query string on new url

我必須將多個URL重定向到新URL。 舊網址帶有擴展名(.aspx),我已使用IIS將所有舊網址重定向到新網址,並且工作正常。 但是,當將某些查詢字符串添加到舊的url時,它不會重定向到新的URL。

例如,重定向非常適合此操作:/course-guide.aspx到/ course-guide

但是,當添加查詢字符串(/course-guide.aspx?UTM=campain)時,它轉到404頁面未找到。 但這應該轉到/ course-guide?UTM = campain

在查詢字符串中,它可以是任何東西。 因此,我必須在web.config中編寫一條規則,以便該規則適用於所有人。

<rewrite>
   <rules> 
     <rule name="Redirect old url to Newb">
        <match url=".*" />
            <conditions>
                <add input="{Newb:{REQUEST_URI}}" pattern="(.+)"  />
            </conditions>
            <action type="Redirect" url="{C:1}" appendQueryString="false"  />
     </rule>
  </rules>
  <rewriteMaps>
     <rewriteMap name="Newb">
         <add key="/about-us.aspx" value="/about-us" />
         <add key="/course-guide.aspx" value="/course-guide" />
         </rewriteMap>
  </rewriteMaps>
</rewrite>

我期望/course-guide.aspx?UTM=camp重定向到/ course-guide?UTM = camp,並且在查詢字符串中可以是任何東西。

根據https://docs.microsoft.com/zh-CN/iis/extensions/url-rewrite-module/using-rewrite-maps-in-url-rewrite-module,您應按您的條件命名rewriteMap,就像這樣:

<add input="{Newb:{REQUEST_URI}}" pattern="(.+)" />

您的規則使用的是{REQUEST_URI}的完全匹配項,並且此變量還包含查詢字符串。 因此,請嘗試將{REQUEST_URI}替換為{URL}。

<rules>
                <rule name="Redirect old url to Newb" stopProcessing="true">
                    <match url=".*" />
                    <conditions>
                        <add input="{Newb:{URL}}" pattern="(.+)" />
                    </conditions>
                    <action type="Redirect" url="{C:1}" appendQueryString="true" redirectType="Temporary" />
                </rule>

如果添加從非.aspx重寫為aspx的規則會發生什么?

<rewrite>
   <rules> 
     <rule name="Redirect old url to Newb">
        <match url=".*" />
            <conditions>
                <add input="{Newb:{REQUEST_URI}}" pattern="(.+)"  />
            </conditions>
            <action type="Redirect" url="{C:1}" redirectType="Permanent" appendQueryString="true"  />
     </rule>
     <rule name="Rewriter" stopProcessing="true">
        <match url="^([^/]+)?$"/>
        <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
        </conditions>
        <action type="Rewrite" url="{R:1}.aspx"/>
    </rule>
  </rules>
  <rewriteMaps>
     <rewriteMap name="Newb">
         <add key="/about-us.aspx" value="/about-us" />
         <add key="/course-guide.aspx" value="/course-guide" />
         </rewriteMap>
  </rewriteMaps>
</rewrite>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM