使用 URLRewriter.NET 重写可包含 1 或 2 个查询字符串的 Url?
在我的项目中,我的/PropertDetail.aspx可以获得2个查询字符串。
第 1 一个用于 PropertyId /PropertDetail.aspx?PropertyId=5
2nd 一个用于语言 /PropertDetail.aspx?PropertyId=5& ;Language=2
编辑: 并且此页面可以获取其中之一,也可以获取两者,因此我的重写器规则需要处理它们两者
所以,我已将这些规则设置为web.config
<rewriter>
<rewrite url="^(/.+(\.gif|\.png|\.jpg|\.ico|\.pdf|\.css|\.js)(\?.+)?)$" to="$1" processing="stop" />
<rewrite url="^/(.+)-(.+).aspx$" to="/PropertyDetail.aspx?PropertyId=$2" processing="stop"/>
<!--http://localhost:1562/Harika-Gayrimenkul-5.aspx-->
<rewrite url="^/(.+)-(.+)-(.+).aspx$" to="/PropertyDetail.aspx?PropertyId=$2&Language=$3" processing="stop"/>
<!--http://localhost:1562/Great-Property-5-2.aspx-->
</rewriter>
如果没有语言查询字符串,那么一切都可以,但是当有语言查询字符串时,它会获取第三个表达式作为 PropertyId 而不是 Language
我如何定义这两个规则适用于同一页面吗?
谢谢
In my project, my /PropertDetail.aspx can get 2 querystrings.
1st one for the PropertyId /PropertDetail.aspx?PropertyId=5
2nd one for the Language /PropertDetail.aspx?PropertyId=5&Language=2
EDIT: and this page can get one of them or can get both of them, so my rewriter rule needs to handle both of them
So, i have set these rules to web.config
<rewriter>
<rewrite url="^(/.+(\.gif|\.png|\.jpg|\.ico|\.pdf|\.css|\.js)(\?.+)?)$" to="$1" processing="stop" />
<rewrite url="^/(.+)-(.+).aspx$" to="/PropertyDetail.aspx?PropertyId=$2" processing="stop"/>
<!--http://localhost:1562/Harika-Gayrimenkul-5.aspx-->
<rewrite url="^/(.+)-(.+)-(.+).aspx$" to="/PropertyDetail.aspx?PropertyId=$2&Language=$3" processing="stop"/>
<!--http://localhost:1562/Great-Property-5-2.aspx-->
</rewriter>
It is all OK if there is no Language querystring, but when there is a language querystring it gets the 3rd expression as the PropertyId instead of Language
How can i define these two rules for the same page ?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
组合答案:
现在对于许多组合来说效果都很好:
返回 PropertyId=555 和 Language=12。
返回 PropertyId=666。
Combined answer:
That's working well now for many combinations:
returns PropertyId=555 and Language=12.
returns PropertyId=666.
通过添加问号,使第二个参数(语言值)在匹配中可选:
编辑:这是一个更正的版本,是在我意识到我有点误解了问题后制作的。
这是一个干净的版本OP 正在运行的内容的升级和简化版本。 它将产生以下形式的输出:
注意
原始版本答案:
Make the second parameter (the language value) optional in the match by adding a question mark:
Edit: this is a corrected version, made after I realized that I misunderstood the question a bit.
This is a cleaned-up and streamlined version of what the OP has working. It will produce output in the form of
Note
Original version of the answer:
这是我们提出的最终解决方案。
我们不需要。
querystring”
只有一个查询字符串
非常感谢 teknohippy 和 JasonMArcher 的帮助
This is the final solution that we have come up with.
which we don't need.
querystring"
only one querystring
Thank you very much for your helps teknohippy and JasonMArcher