重写“外部”网址

时间:2011-08-29 15:09:33

标签: url-rewriting

我正在寻找一种解决方案来替换卷曲响应到我网站的所有链接。

假设我的网站是:example.com,然后我向site.com发出CURL请求。 site.com有各种链接:

   <a href="http://smthing.com">Something!</a>
   <some html>......
   <a href="http://google.com">Google!</a>
   <more html>
   <a href="#" onclick="window.location.href='http://somethingElse.com'">Something else</a>

我的目标是在所有链接前加上:example.com/?url={THE URL of THE LINK}(我的网站是AKA)。

我当前的解决方案使用regexp来“捕获”并处理所有链接。 这在大多数情况下都有效,但我不时遇到一个无法正常表达的无效HTML。 正则表达式还有另一个缺点:我无法捕获onclick =“”动作和不同的链接场景。

我听说过几种解决方案,例如重写和反向代理。他们中的任何一个都可以努力实现我的目标吗?

谢谢..

1 个答案:

答案 0 :(得分:0)

你应该绝对能够使用正则表达式。但是,您的代码必须更加健壮才能处理内联脚本。分析大量的锚属性样本以确定所有可能的链接格式,超出/ href =“”/和/window.location.href/。 您还必须解析引用的脚本文件以查看事件处理程序所持有的内容。