将一部分流量重定向到其他服务器

时间:2015-07-31 08:47:20

标签: python apache .htaccess virtualhost httpd.conf

在我的服务器上,我想通过以下方式重定向通过端口80访问的所有流量:

http://12.34.56.78/blahblah/...

到Python Web服务器,例如在端口7777上监听...

...并将所有其余http://12.34.56.78/(anythingelse)/ ...与Apache保持在/home/www/

访问http://12.34.56.78/blahblah/时,我得到:

  

内部服务器错误

     

服务器遇到内部错误或配置错误   无法完成您的请求。

为什么它不适用于以下Apache配置?

<VirtualHost *:80>
  ServerName 12.34.56.78
  DocumentRoot /home/www/
  <Directory />
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Allow from all
    Require all granted
  </Directory>
</VirtualHost>

<VirtualHost *:80>
  ServerName 12.34.56.78
  <Directory /blahblah/>
    RewriteEngine On
    RewriteRule /(.*)           localhost:7777/$1 [P,L]
  </Directory>
</VirtualHost>

1 个答案:

答案 0 :(得分:1)

问题只是你正在使用另一个带有mod_rewrite的虚拟主机。

RewriteRule的工作方式是指定要匹配的URL中的路径,并将其重写为其他内容(在本例中为代理)。

此外,目录元素正在讨论主机上的特定真实目录。根据您的问题,您似乎不希望将RewriteRules放在Directory元素中。

此外,您应该在代理的RewriteRule中指定URL方案。

这些方面应该有所作为。

<VirtualHost *:80>
  ServerName 12.34.56.78
  DocumentRoot /home/www/
  <Directory />
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Allow from all
    Require all granted
  </Directory>
  RewriteEngine On
  RewriteRule ^/blahblah(.*)$           http://localhost:7777$1 [P,L]
</VirtualHost>