如何使用Apache mod_rewrite或RewriteCond重写外部链接(重定向到退出页面)?

时间:2011-05-03 16:57:48

标签: apache mod-rewrite

老实说,我花了好几个小时试图找到解决方案(我通常很好寻找解决方案),但我似乎有一个独特的问题。

我们假设我的当前网址为http://www.something.com

我想更改以下网页中的所有外部链接...

1. <a href="http://other.something.com">other</a>
2. <a href="http://www.google.com">google</a>

......对此:

  1. &lt; a href =“ http://www.something.com/redirect.htm? http://other.something.com”&gt;其他&lt; / a&gt;
  2. &lt; a href =“ http://www.something.com/redirect.htm? http://www.google.com”&gt; google&lt; / a&gt;
  3. 我没有PHP或ASP。我们假设我的网站只是静态HTML。是否有可行的Apache URL重写解决方案?

    谢谢

2 个答案:

答案 0 :(得分:1)

您可以尝试mod_proxy_html。引自config guide

  

语法:from-pattern的ProxyHTMLURLMap   to-pattern [flags] [cond]

     

这是关键指令   重写HTML链接。解析时   文档,每当链接目标   匹配from-pattern,匹配   部分将被重写为   到图案。

答案 1 :(得分:1)

mod_substitute可能是另一种选择。

  • 在负面,它是一个带有all its drawbacks的简单正则表达式过滤器。
  • 从好的方面来说,它包含在默认的apache发行版中,可能足以解决您的问题。

    AddOutputFilterByType SUBSTITUTE text/html
    Substitute s|<a([^>]*)href="http(.?)://(.*)"([^>]*)>|<a $1 href="http://www.something.com?redirect=http$2://$3" $4>|i
    

修改

如果您的网站确实是一组静态html网页,为什么不使用正确的HTML DOM工具对其进行离线转换?