[英].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.