ASP.NET web application中的redirect
在开发ASP.NET MVC web application过程中,开发上线了新系统后,需要把老系统的url redirect新系统下
其中在项目系统目录下有一个文件 301RedirectsPages.config, 内容如下:
<rewriteMaps>
<rewriteMap name="Redirects">
<add key="/contact-us.aspx" value="/contact-us" />
<add key="/services-solutions" value="/services-and-solutions" />
<add key="/sales-support" value="/sales-and-support" />
<add key="/events-news" value="/events-and-news" />
<add key="/services-solutions/services.aspx" value="/services-and-solutions/services" />
<add key="/services-solutions/solutions.aspx" value="/services-and-solutions/solutions" />
</rewriteMap>
</rewriteMaps> 在web.config文件中,在system.webServer下面,有一个rewrite节点,显示如下:
<system.webServer>
<rewrite xdt:Transform="Replace">
<rewriteMaps configSource="301RedirectsPages.config" />
<rules>
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>
<rule name="Remove trailing slash" stopProcessing="true">
<match url="(.*)/$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="{R:1}" />
</rule>
<rule name="Redirects">
<match url=".*" />
<conditions>
<add input="{Redirects:{REQUEST_URI}}" pattern="(.+)" />
</conditions>
<action type="Redirect" url="{C:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
这种情况下,在浏览器窗口输入URL:
localhost/contact-us.aspx 将自动redirect到 localhost/contact-us
localhost/services-solutions/services.aspx 自动redirect到 localhost/services-and-solutions/services
localhost/services-solutions/solutions.aspx 自动redirect到 localhost/services-and-solutions/solutions
但是,当你输入
localhost/services-solutions 不能自动redirect到 localhost/services-and-solutions
localhost/sales-support 不能自动redirect到 localhost/sales-and-support
localhost/events-news 不能自动redirect到 localhost/events-and-news
查找了半天的原因,才发现是在web.config 中的设置
appendQueryString="true" 应该改成 appendQueryString="false"
也就是这一行 <action type="Redirect" url="{C:1}" appendQueryString="true" />
应该改成 <action type="Redirect" url="{C:1}" appendQueryString="false" />
改成后的web.config文件如下:
<rewrite xdt:Transform="Replace">
<rewriteMaps configSource="301RedirectsPages.config" />
<rules>
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>
<rule name="Remove trailing slash" stopProcessing="true">
<match url="(.*)/$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="{R:1}" />
</rule>
<rule name="Redirects">
<match url=".*" />
<conditions>
<add input="{Redirects:{REQUEST_URI}}" pattern="(.+)" />
</conditions>
<action type="Redirect" url="{C:1}" appendQueryString="false" />
</rule>
</rules>
</rewrite>
最新文章
- linux下查看tomcat和jdk版本号
- Android TextWatcher监控EditText中的输入内容并限制其输入字符个数
- 编辑一个.bat文件来启动一个.erl的程序?
- 手把手教你从购买vps到搭建一个node服务器
- Swift面向对象基础(上)——Swift中的类和结构体(上)
- UIStepper
- java_Properties写入文件
- 关闭linux终端命令行退格报警声(centos7亲测有效)
- 3D游戏引擎一 win32编程
- TFS二次开发、C#知识点、SQL知识
- PHP. 03 .ajax传输XML、 ajax传输json、封装
- appium测试准备记录
- 思科交换机根据mac地址限制主机
- Numpy 数组操作
- kafka配置简要描述
- shell教程-001:shell简介 什么是shell,shell命令的两种执行方式
- Spring Boot&mdash;03REST请求
- 抽取JDBCTemplate
- Python-- Redis Set
- UOJ #35. 后缀排序 后缀数组 模板
热门文章
- Asp.Net Mvc: 浅析TempData机制
- [转]Struts form传值
- 题解 P1095 【守望者的逃离】
- Flask:工厂函数和蓝本
- POJ 3714 Raid 近期对点题解
- 负载均衡,会话保持,session同步(转)
- 在pycharm中执行脚本没有报错但输出显示Redirection is not supported.
- js正則函數 match、exec、test、search、replace、split 使用介紹集合
- tmux基本使用方法
- P3746 [六省联考2017]组合数问题