VirtualHost中的URL重写导致403 Forbidden

时间:2018-02-13 12:10:20

标签: apache mod-rewrite apache2 virtualhost apache2.4

我的前端服务器由Apache 2.4处理。

我希望在访问http://198.51.100.13/site1/时,它会自动将流量重定向到我服务器的端口1001,如下所示:

<VirtualHost *:80>
ServerName 198.51.100.13
<Directory "/">
Require all granted
</Directory>

RewriteEngine On
RewriteRule ^/site1(.*)$ http://localhost:1001$1 [P,L]
RewriteRule ^/site2(.*)$ http://localhost:1002$1 [P,L]
RewriteRule ^/site3(.*)$ http://localhost:1003$1 [P,L]
</VirtualHost>

问题:打开http://198.51.100.13/site1/时出现此错误:

  

403:禁止
  您无权访问此服务器上的/ areallybigpage。

另一方面,如果我http://198.51.100.13:1001/,它可以工作(有一个Python serveron端口1001,但这对于这个问题并不重要。)

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

解决方案是:

<VirtualHost *:80>
ServerName 198.51.100.13
RewriteEngine On
RewriteRule ^/site1(.*)$ http://localhost:1001$1 [P,L]
RewriteRule ^/site2(.*)$ http://localhost:1002$1 [P,L]
RewriteRule ^/site3(.*)$ http://localhost:1003$1 [P,L]
</VirtualHost>

但不要忘记这样做:

a2enmod proxy  
a2enmod proxy_http       # I forgot this one!
a2enmod proxy_wstunnel   # mandatory if using websockets
service apache2 restart