ADC

示例 6:迁移 Apache 重写模块规则

Example Inc. 目前正在使用 Apache 重写模块来处理发送到其 Web 服务器的搜索请求,并根据请求 URL 中的信息将这些请求重定向到相应的服务器。Example Inc. 希望通过将这些规则迁移到 NetScaler 平台来简化其设置。

示例当前使用的几个 Apache 重写规则如下所示。如果搜索请求没有 siteID 字符串或 siteID 字符串等于零 (0),则这些规则将搜索请求重定向到特殊结果页面,如果这些条件不适用,则重定向到标准结果页面。

下面是当前的 Apache 重写规则:

  • rewriteCond% {REQUEST_FILENAME} ^/search$ [NC]
  • RewriteCond %{QUERY_STRING} !SiteId= [OR]
  • RewriteCond %{QUERY_STRING} SiteId=0
  • RewriteCond %{QUERY_STRING} CallName=DisplayResults [NC]
  • rewriteRule ^.*$ results2.html [P, L]
  • rewriteCond% {REQUEST_FILENAME} ^/search$ [NC]
  • RewriteCond %{QUERY_STRING} CallName=DisplayResults [NC]
  • rewriteRule ^.*$ /results.html [P, L]

要在 NetScaler 上实现这些 Apache 重写规则,您需要使用下表中的值创建重写操作。

操作名称 重写操作的类型 选择目标引用的表达式 替换文本的字符串表达式
Action-Rewrite-Display_Results_NulSiteID REPLACE HTTP.REQ.URL “/results2.html”
Action-Rewrite-Display_Results REPLACE HTTP.REQ.URL “/results2.html”

然后,您将使用下表所示的值创建重写策略。

策略名称 操作名称 未定义的动作 表达式
Policy-Rewrite-Display_Results_NulSiteID Action-Rewrite-Display_Results_NulSiteID NOREWRITE HTTP.REQ.URL.PATH.SET_TEXT_MODE(IGNORECASE).EQ(“/search”) && (!HTTP.REQ.URL.QUERY.CONTAINS(“SiteId=”) || HTTP.REQ.URL.QUERY.CONTAINS(“SiteId=0”) || HTTP.REQ.URL.QUERY.SET_TEXT_MODE(IGNORECASE).CONTAINS(“CallName=DisplayResults”))
Policy-Rewrite-Display_Results Action-Rewrite-Display_Results NOREWRITE HTTP.REQ.URL.PATH.SET_TEXT_MODE(IGNORECASE).EQ(“/search”) || HTTP.REQ.URL.QUERY.SET_TEXT_MODE(IGNORECASE).CONTAINS(“CallName=DisplayResults”))

最后,您将绑定重写策略,将第一个策略的优先级分配为 600,为第二个策略分配优先级 700,然后将两个绑定的 goto 表达式设置为 NEXT。

现在,NetScaler 处理这些搜索请求的方法与迁移 Apache 重写模块规则之前的 Web 服务器完全相同。

示例 6:迁移 Apache 重写模块规则