IIS URL重写多个参数

时间:2017-03-20 16:49:09

标签: url iis url-rewriting

我对URL重写界面感到困惑。我不明白我需要做什么。 我有一个网址:

www.example.com/diretory/subdirectory/index.html?param1=1&param2=2&param3=2&param4=7

我想在<a> - href标记中隐藏此网址,该标记显示“示例标记”。 请求URL时,应将其重写为

www.example.com/program/location/year/vacancie

我已经尝试过这个:

<system.webServer>
    <rewrite>
        <rules>
            <rule name="ProgramRewrite" patternSyntax="ECMAScript" stopProcessing="true">
                <match url="\?([^/]+)&amp;([^/]+)&amp;([^/]+)&amp;([^/]+)" />
                <action type="Rewrite" url="www.example.com/program/location/year/vacancie" logRewrittenUrl="true" />
                <conditions>
                </conditions>
            </rule>
        </rules>
    </rewrite>
</system.webServer>

在URL重写界面中,Test Pattern表示它正在运行并获取:

?param1=1&param2=2&param3=2&param4=7
param1=1
param2=2
param3=2
param4=7

我也检查了日志url重写,但是在我的日志中它没有显示。

2017-03-20 16:29:24 192.168.253.146 GET /diretory/subdirectory/index.html param1=1&param2=2&param3=2&param4=7 88 - 192.168.253.146 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/56.0.2924.87+Safari/537.36 - 304 0 0 4

ps:网址不起作用,仅用于说明目的。

1 个答案:

答案 0 :(得分:1)

匹配网址仅匹配网址,不会考虑查询字符串。您需要为此添加条件。您是否也希望重写此项(以便服务器在内部执行新URL)或重定向(因此服务器将请求浏览器转到地址栏中的新URL和URL更改)。如果您想要重写,则不应再次添加域,以防您想要重定向添加http://。假设您想在下面的规则中使用重写:

 <rule name="ProgramRewrite" patternSyntax="ECMAScript" stopProcessing="true">
            <match url="(.*)" />
            <action type="Rewrite" url="/program/location/year/vacancie" logRewrittenUrl="true" />
            <conditions>
                    <add input="{QUERY_STRING}" pattern="([^/]+)&amp;([^/]+)&amp;([^/]+)&amp;([^/]+)" />
            </conditions>
        </rule>