2

我有一个包含许多应用程序、虚拟目录和几个应用程序池的 asp.net 站点。对于 URL 重写,我使用 Helicon ISAPI 重写器,版本 3。我有一个页面(可以说是“page.aspx”),应该可以由不同的 URL 访问,不同的 URL 以不同的值重写单个查询字符串参数。所有 Helicon 规则都在我的本地环境中进行了测试,但在部署到服务器后我遇到了问题。

我有网址:

URL1: '/product-one/'
URL2: '/product-one-another-version/'

显示“productone”和“productoneversion”的两个页面上的内容完全相同,但第一个 URL 可访问,第二个显示 403.18 错误。正如我所发现的,此错误表明 URL 已从一个池重写到另一个池。但这毕竟是同一个页面,为什么一个 URL 有效而另一个无效!

这些 URL 成功(我在 helicon 和 IIS 日志中检查过)重写为以下原始 URL:
URL1:'/folder/page.aspx?product=productone'
URL2:'/folder/page.aspx?product=productoneversion'

我有 8 个不同的“产品”参数选项。如果参数等于“productone”或“productoneversion”,则页面上的内容相同,并且在其他版本的页面上不同。8 个 URL 中只有 2 个通过 Helicon 工作。其余页面抛出 403.18 错误。但是,如果我使用具有不同查询参数的原始 URL,所有页面版本都会按预期工作。

请帮助我找出我的设置有什么问题,我该如何解决?

我的机器:win 8 企业版,IIS 8
服务器:win server 2012,IIS 8

4

2 回答 2

0

我注意到“8 个 URL 中的 2 个有效”、“/product-one/”和“/product-four/”。而且我还注意到 IIS 中有相同名称的 Web 应用程序 - 'product-one' 和 'product-four'。这些应用程序与包含原始页面“page.aspx”的 Web 应用程序运行相同的应用程序池。

因此,我在 IIS 中创建了另外六个具有所需名称的 Web 应用程序(“产品二”、“产品三”等),并让它们使用相应的应用程序池并指向新的空文件夹。

我知道,这不是一个优雅的解决方案,但它对我有用。

于 2013-09-06T18:38:04.297 回答
0

如果您在站点甚至池之间进行重写,则不再是重写。是代理。所以你需要在规则末尾使用 [P] 标志。

Алучше напишите в Helicon, разработчики все русскоговорящие。

于 2013-09-06T16:14:43.227 回答