在我的服务器上,我想通过以下方式重定向通过端口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>
答案 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>