c# - 带有查询字符串的 .aspx url 无法在没有 .aspx 的情况下重定向到 url - 我还想在新 url 上保留查询字符串
问题描述
我必须将多个 URL 重定向到新 URL。旧 URL 带有扩展名 (.aspx) 我已使用 IIS 将所有旧 URL 重定向到新 URL,它工作正常。但是当一些查询字符串被添加到旧 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 并且在查询字符串中它可以是任何东西。
解决方案
如果添加从非 .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>
推荐阅读
- asp.net - 尝试在 macOS 上启动现有项目时出现“找不到 ApplicationHost.cs 文件”
- php - 在 Wordpress Header 中包含外部 php
- c++ - SDL2 鼠标相对于视口的位置
- amazon-dynamodb - addAll 如何与模拟分页查询一起使用
- docker - 使用 docker 角色时出错
- excel - 如何使用公式匹配 Excel 中不同表格中的多个条件?
- python - 导入谷歌日历 API 在 IDE 中不起作用,但在控制面板中起作用
- python - sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2013, 'Lost connection to MySQL server during query')
- c# - 如何将 Join 与聚合函数和 group by 结合使用
- c++ - 未在范围内声明的类对象