首页 > 解决方案 > 如何制定此重写规则以便它可以接受查询字符串?

问题描述

我有一个使用 map 方法的 url 重写规则。

            <rewriteMap name="Pages">
                <add key="/search" value="/search.asp" />
            </rewriteMap>




            <rule name="Rewrite rule1 for Pages">
                <match url=".*" />
                <conditions>
                    <add input="{Pages:{REQUEST_URI}}" pattern="(.+)" />
                </conditions>
                <action type="Rewrite" url="{C:1}" appendQueryString="true" />
            </rule>

我的问题是当我像下面这样使用此页面时,出现错误:

/搜索?关键字=数学

我收到 HTTP 错误 404.0 - 未找到

详细错误信息:Module IIS Web Core Notification MapRequestHandler Handler StaticFile Error Code 0x80070002 Requested URL http://localhost:85/search?keyword=math Physical Path D:\webs\V5ST\HTML\search Logon Method Anonymous Logon User Anonymous

我怎样才能做到这一点,以便将任何查询字符串传递给 search.asp?

标签: url-rewritingiis-7.5

解决方案


您可以使用以下重写规则:

 <rule name="query string redirect" enabled="true" stopProcessing="true">
                <match url="(.*)" />
                <conditions>
                    <add input="{REQUEST_URI}" pattern="search\?(.*)" />
                </conditions>
                <action type="Rewrite" url="http://localhost:132/search.asp?{C:1}" appendQueryString="false" />
            </rule>

问候, 雅尔帕


推荐阅读