我按照说明
Learn IIS’s webpage为我的asp.net应用程序添加了重写映射的静态重定向.
以下是配置:
<rule name="Redirect rule1 for information" stopProcessing="true"> <match url=".*" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> <add input="{information:{REQUEST_URI}}" pattern="(.+)" /> </conditions> <action type="Rewrite" url="{C:1}" appendQueryString="true" /> </rule>
和
<rewriteMaps> <rewriteMap name="information"> <add key="/information/CorporateSales.aspx" value="/KB/information/CorporateSales" /> <add key="/information/ComputerRepair.aspx" value="/KB/information/ComputerRepair" /> </rewriteMap> </rewriteMaps>
这甚至最初是由IIS管理器中的向导创建的,用于使用重写映射.
所以想法是/information/CorporateSales.aspx – > / KB / information / CorporateSales具有301重定向(永久移动).
但是我只是加载原始的aspx页面(我们将在以后删除).我甚至删除了文件,因为它默认为现有资源,并且我只是得到一个没有重定向的普通404.
有人有想法吗?
让我澄清一下:
重写模块工作,它已安装并运行.我的标准正则表达式规则运行良好.但我的重写地图却没有.
解决方法
这篇文章
http://www.iis.net/learn/extensions/url-rewrite-module/using-rewrite-maps-in-url-rewrite-module和下面的代码对我有用.
<rewrite> <rules> <rule name="Redirect rule1 for RedirectURLs"> <match url=".*" /> <conditions> <add input="{RedirectURLs:{REQUEST_URI}}" pattern="(.+)" /> </conditions> <action type="Redirect" url="{C:1}" appendQueryString="false" /> </rule> </rules> <rewriteMaps> <rewriteMap name="RedirectURLs"> <add key="/privacy.PHP" value="/privacy" /> </rewriteMap> </rewriteMaps> </rewrite>