在开发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>

最新文章

  1. linux下查看tomcat和jdk版本号
  2. Android TextWatcher监控EditText中的输入内容并限制其输入字符个数
  3. 编辑一个.bat文件来启动一个.erl的程序?
  4. 手把手教你从购买vps到搭建一个node服务器
  5. Swift面向对象基础(上)——Swift中的类和结构体(上)
  6. UIStepper
  7. java_Properties写入文件
  8. 关闭linux终端命令行退格报警声(centos7亲测有效)
  9. 3D游戏引擎一 win32编程
  10. TFS二次开发、C#知识点、SQL知识
  11. PHP. 03 .ajax传输XML、 ajax传输json、封装
  12. appium测试准备记录
  13. 思科交换机根据mac地址限制主机
  14. Numpy 数组操作
  15. kafka配置简要描述
  16. shell教程-001:shell简介 什么是shell,shell命令的两种执行方式
  17. Spring Boot&mdash;03REST请求
  18. 抽取JDBCTemplate
  19. Python-- Redis Set
  20. UOJ #35. 后缀排序 后缀数组 模板

热门文章

  1. Asp.Net Mvc: 浅析TempData机制
  2. [转]Struts form传值
  3. 题解 P1095 【守望者的逃离】
  4. Flask:工厂函数和蓝本
  5. POJ 3714 Raid 近期对点题解
  6. 负载均衡,会话保持,session同步(转)
  7. 在pycharm中执行脚本没有报错但输出显示Redirection is not supported.
  8. js正則函數 match、exec、test、search、replace、split 使用介紹集合
  9. tmux基本使用方法
  10. P3746 [六省联考2017]组合数问题