ADC

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

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

示例当前使用的几个 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]

要在 Citrix ADC 上实施这些 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。

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

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