zoukankan      html  css  js  c++  java
  • 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>


  • 相关阅读:
    31个是你终生受用的爱情原则
    毕业后的五年拉开大家差距的原因在哪里?
    如何学习编程
    让人印象深刻的回答
    Android签名机制之---签名验证过程具体解释
    移动APP怎样保存用户password
    算法导论学习之线性时间求第k小元素+堆思想求前k大元素
    C#软件开发实例.私人订制自己的屏幕截图工具(十)在截图中包括鼠标指针形状
    Windows server 2003 + IIS6 搭建Asp.net MVC执行环境
    java移位运算符实验程序:&lt;&lt;(左移)、&gt;&gt;(带符 号右移)和&gt;&gt;&gt;(无符号右移)
  • 原文地址:https://www.cnblogs.com/wphl-27/p/6806485.html
Copyright © 2011-2022 走看看