Apache - 通过代理服务器添加URL重定向

时间:2013-09-09 20:14:18

标签: apache redirect proxy

是否可以通过代理连接将用户重定向到特定链接?

示例,每当用户访问apache服务器ip地址时:

http://196.169.34.34 

apache应将用户重定向到特定端口 3128 上的通过代理服务器( 196.169.34.21 )的特定网址链接

这可能吗?

谢谢

2 个答案:

答案 0 :(得分:1)

196.169.34.34的vhost配置中,您可以添加:

Redirect / http://196.169.34.21:3128/specific-url

使用您希望将浏览器重定向到的网址替换specific-url部分。

如果您没有vhost配置访问权限,可以在文档根目录中的htaccess文件中添加重写规则(假设您对htaccess文件和mod_rewrite有适当的覆盖):

RewriteEngine On
RewriteCond %{HTTP_HOST} ^196\.169\.34\.34$
RewriteRule ^(.*)$ http://196.169.34.21:3128/specific-url/(.*)$ [L,R]

您可以通过添加301:

使此重定向永久化
Redirect 301 / http://196.169.34.21:3128/specific-url

RewriteEngine On
RewriteCond %{HTTP_HOST} ^196\.169\.34\.34$
RewriteRule ^(.*)$ http://196.169.34.21:3128/specific-url/(.*)$ [L,R=301]

答案 1 :(得分:0)

这也可以使用本地解决方案 - 本地PC上的代理PAC文件来完成。此文件的功能是根据URL / URI指示certin流量,以指向某个代理地址,如我的示例所示。

以下是.pac文件的示例代码。您可以获得完整的文档here

function FindProxyForURL(url, host) {

// First start with the exceptions that need to be proxied

if ((host == "www.company.net") ||
    (host == "webmail.company.net") ||
    (host == "portal.company.net") ||
    (dnsDomainIs(host, ".public.company.net"))) {
         return "PROXY proxy1.company.net:8000";
}

// Next, we want to send all traffic to company.net browser direct

if (dnsDomainIs(host, ".company.net")) {
       return "DIRECT";
}

// Default return condition is the proxy, since it’s assumed that everything
// else is on the Internet.

return "PROXY proxy1.company.net:8000";

} // End of function

这就是你如何从Windows上的互联网选项中实际调用proxy.pac文件:

enter image description here