【发布时间】:2014-01-17 17:16:00
【问题描述】:
总结:
如果我有这两样东西:
- 带有 Reponse.Redirect("/Page2.aspx") 的 ASP.Net 页面 Page1.aspx Page_Load 事件
- IIS 上的 URL 重写规则,其中“*/Page1.aspx”被重定向 (303) 到“/Page3.aspx”
什么先运行,1 还是 2?
(ASP.Net版本为4.0,IIS版本为7.5)
实战案例
http://inhibitif.com/product/Hair-Free-Deodorant
这条路线被映射到 Product.aspx 页面,其中 Hair-Free-Face-Serum 是产品密钥。如果此页面找不到产品密钥,它会在 Page_Load 事件中重定向到完整的产品列表。
根据网站所有者的要求(我无法控制),该特定密钥(Hair-Free-Deodorant)已更改(Hair-Free-Deodorant-Key-Lime-Mint-50ml)。因此,对该特定产品的任何调用都会被重定向到完整的产品列表 (/products)。因为对于 SEO,最好使用新键重定向到新产品页面(而不是重定向到通用产品列表页面),我在 IIS 上添加了这个重写规则
<rule name="Old Product Key: Hair-Free-Deodorant" patternSyntax="Wildcard" stopProcessing="true">
<match url="*/product/Hair-Free-Deodorant" />
<action type="Redirect" url="/product/Hair-Free-Deodorant-Key-Lime-Mint-50ml" />
</rule>
规则永远不会触发。总是调用重定向。
- 我知道我可以将此逻辑添加到 Page_Load 事件处理程序,但是, 不应该反过来吗? IIS规则不应该得到 优先级?
- 也许我的规则是错误的?
注意:重写规则正在网站上运行。例如,任何对“www.inhibitif.com”的调用都会被重写为“inhibitif.com”
【问题讨论】:
-
感谢您添加该信息。我已经删除了我的答案,因为我认为它不能回答你的实际问题,因为我看到了所有的细节(它实际上可能是不正确的)。值得一提的是,由于重定向是 302(这就是 Response.重定向使用)。
-
你是对的。重写首先运行。匹配模式格式错误。请参阅我自己对这个问题的回答。谢谢!
标签: asp.net iis url-rewriting