枕上从妨一夜睡,灯前读尽十年诗。这篇文章主要讲述ASP.NET web application中的redirect相关的知识,希望能为你提供帮助。
在开发ASP.NET MVC web application过程中,开发上线了新系统后,需要把老系统的url redirect新系统下
其中在项目系统目录下有一个文件
301RedirectsPages.config, 内容如下:
< rewriteMaps> < rewriteMap name="Redirects"> < add key="/contact-us.aspx" value="https://www.songbingjia.com/contact-us" /> < add key="/services-solutions" value="https://www.songbingjia.com/services-and-solutions" /> < add key="/sales-support" value="https://www.songbingjia.com/sales-and-support" /> < add key="/events-news" value="https://www.songbingjia.com/events-and-news" /> < add key="/services-solutions/services.aspx" value="https://www.songbingjia.com/services-and-solutions/services" /> < add key="/services-solutions/solutions.aspx" value="https://www.songbingjia.com/services-and-solutions/solutions" /> < /rewriteMap> < /rewriteMaps>
在web.config文件中,在system.webServer下面,有一个rewrite节点,显示如下:
< system.webServer> < rewritexdt: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
【ASP.NET web application中的redirect】查找了半天的原因,才发现是在web.config 中的设置
appendQueryString="true" 应该改成 appendQueryString="false"
也就是这一行 < action type="Redirect" url="{C:1}" appendQueryString="true" />
应该改成 < action type="Redirect" url="{C:1}" appendQueryString="false" />
改成后的web.config文件如下:
< rewritexdt: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>
推荐阅读
- Android Studio 一些方便使用的设置
- android中非堵塞socket通信
- App开放接口api安全性—Token签名sign的设计与实现
- android Dialog 底部弹出
- Android实现组件之间同步的回调通信
- 安卓搭建局域网服务器KSWEB--序列号
- app性能测试通过loadrunner录制
- Android开发入门的正确姿势,你get到了吗()
- Android 使用内置的Camera应用程序捕获图像