我对URL重写界面感到困惑。我不明白我需要做什么。 我有一个网址:
www.example.com/diretory/subdirectory/index.html?param1=1¶m2=2¶m3=2¶m4=7
我想在<a>
- href标记中隐藏此网址,该标记显示“示例标记”。
请求URL时,应将其重写为
www.example.com/program/location/year/vacancie
我已经尝试过这个:
<system.webServer>
<rewrite>
<rules>
<rule name="ProgramRewrite" patternSyntax="ECMAScript" stopProcessing="true">
<match url="\?([^/]+)&([^/]+)&([^/]+)&([^/]+)" />
<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¶m2=2¶m3=2¶m4=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¶m2=2¶m3=2¶m4=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:网址不起作用,仅用于说明目的。
答案 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="([^/]+)&([^/]+)&([^/]+)&([^/]+)" />
</conditions>
</rule>