我已阅读线程,我仍然无法解决问题,我知道我的问题,但想知道是否可以指出我正确的方向。
我已经设定了规则:
www.mydomain.com/productlist.asp?CategoryID=2
重写为
www.mydomain.com/homeware/cushions
<rule name="cushions">
<match url="^homeware/cushions" />
<action type="Rewrite" url="productlist.asp?CategoryID=2" />
</rule>
好的,现在我的问题在于结果的分页,所以当用户进入下一页时原始域看起来像:
www.mydomain.com/productlist.asp?CategoryID=2&Page=2
这是我遇到问题的地方 - 我希望这成为:
www.mydomain.com/homeware/cushions?page=2
并且正在进行多少页面 只是无法让它工作 - 我明白我需要使用查询字符串,但真的很挣扎。请求专业知识,感谢您的帮助
答案 0 :(得分:2)
要捕获查询字符串,您需要使用条件,因为匹配URL不包含它。 所以你可以用以下规则来做到这一点:
<rule name="cushions" stopProcessing="true">
<match url="^homeware/cushions$" />
<conditions>
<add input="{QUERY_STRING}" pattern="page=(\d+)" />
</conditions>
<action type="Rewrite" url="productlist.asp?CategoryID=2&page={C:1}" appendQueryString="false" />
答案 1 :(得分:0)
只需在操作中添加appendQueryString =“true”,就会自动附加查询字符串。
<rewrite>
<rules>
<rule name="test">
<match url="^homeware/cushions" />
<action type="Rewrite" url="/test/test.cfm?category=5" appendQueryString="true" />
<conditions>
</conditions>
</rule>
</rules>
</rewrite>
http://localhost:8081/homeware/cushions?page=2 您将在URL变量中收到值为2的页面。