我正在尝试使用重写策略设置我的 Netscaler 设备。我的要求之一是用主页 URL 替换任何非域 URL...也就是说,我希望 Netscaler 用主页 URL 替换从设备后面提供的页面上的所有外部链接(例如:https ://my.domain.edu)。我尝试配置的重写策略类型使用符合 PCRE 的正则表达式引擎来查找网页上的特定文本(可能有多个匹配项)。
好的链接:
https://your.page.domain.edu -- won't be replaced
http://good.domain.edu -- also won't be replaced
坏链接(应替换为主页 URL):
https://www.google.com
http://not.the.best.example.org
http://another.bad.example.erewhon.edu
https://my.domain.com
我目前有这种模式:
(https?://)(?![\w.-]+\.domain\.edu)
根据 Netscaler 的 RegEx 评估工具,它匹配上面的坏链接,不匹配好的链接,所以它似乎正在工作......事实上,当我在测试页面上运行它时,Netscaler 找到我所有的 URL想要替换并单独留下好的 URL。
问题是 Netscaler 没有按照我想要的方式替换 URL:它用主页 URL 替换 (https?://) 组,但保留了错误 URL 的剩余部分。例如,它将http://www.google.com替换为: https ://my.domain.eduwww.google.com
我可以配置重写策略来替换特定的 URL(例如https://www.google.com),所以我知道该机制有效。显然,这不适用于一般情况。
我尝试将整个正则表达式括在括号中,但这并没有改变任何东西。
可以为一般情况编写正则表达式,以匹配所有不属于我的域的整个 URL?
提前感谢您的帮助!