Helicon Isapi 重写器 3 asp.net 503.18 错误具有不同友好 URL 的同一页面



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

我有网址:

网址 1: '/product-one/'
URL2: '/product-one-other-version/'

两个页面上显示的"productone"和"productoneversion"的内容完全相同,但第一个URL可以访问,第二个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,则所有页面版本都按预期工作。

请帮助我找出我的设置出了什么问题,以及如何解决它?

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

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

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

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

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

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

最新更新