我已将 Apache 配置为代理所有对 foo.bar.com 的请求(别名 /bazbar 除外)。配置的代理部分和代理传递部分均能正常工作,只是它将 index.php 作为纯文本文件提供。
如何让 Apache 正确提供 php 文件?这是我的配置。
<VirtualHost *:80>
ServerName foo.bar.com
Alias /bazbar /var/www/bazbar
ProxyPreserveHost On
ProxyPass /bazbar !
<Location /bazbar>
SetHandler None
</Location>
<Location />
Order allow,deny
allow from all
ProxyPass http://localhost:8080
ProxyPassReverse http://localhost:8080
</Location>
</VirtualHost>
*注意我已经确认 php 配置正确,因为当我进入http://localhost/somescript.phpphp 渲染正确
答案1
查看 <Location /bazbar> 部分。SetHandler None 禁用该位置的所有处理程序。您需要删除该指令才能使其按预期工作。
答案2
如果你访问http://本地主机:8080/在那台机器上,index.php 是作为文本文件提供的,还是在服务器上运行的?在代理的情况下,apache 只会获取它所得到的内容,并将其反馈给客户端。我的第一眼就在那里。