我的服务器环境是Apache,版本是Apache / 2.4.18(Ubuntu)
站点配置文件如下:
<VirtualHost *:80>
DirectoryIndex index.html index.php
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/$1 -d
RewriteRule (.*) - [END]
# Else proxy
RewriteRule ^/(.*)$ http://127.0.0.1:60000/$1 [P,QSA]
ProxyPassReverse / http://127.0.0.1:60000/
ProxyPreserveHost On
</VirtualHost>
当我仅使用index.php文件访问目录时,它将是反向代理,没有解析index.php
如果将DirectoryIndex更改为index.php index.html,将解决问题,但是上述问题将在index.html中发生。
当我删除反向代理时,index.php和index.html都将是正常的,并且不受顺序的影响。
所以问题可能出在:Apache仅在反向代理存在时才识别第一个DirectoryIndex,如果不存在,它将对反向代理进行替代,而不尝试使用它后面的默认主页。
我希望默认主页和反向代理可以和平共处。如何处理?
答案 0 :(得分:0)
经过几次探索,我尝试了其他方法来实现功能。
<VirtualHost *:80>
DirectoryIndex index.html
RewriteEngine on
#
RewriteCond %{DOCUMENT_ROOT}/$1 -d
RewriteCond %{DOCUMENT_ROOT}/$1/index.php -f
RewriteRule ^/(.*)/$ /$1/index.php [P,END]
#
RewriteCond %{DOCUMENT_ROOT}/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/$1 -d
RewriteRule (.*) - [END]
# Else proxy
RewriteRule ^/(.*)$ http://127.0.0.1:60000/$1 [P,QSA]
ProxyPassReverse / http://127.0.0.1:60000/
ProxyPreserveHost On
</VirtualHost>
与上述配置一样,我仅保留一个默认主页,并使用反向代理方法实现其他默认主页的显示。
但是显然,这不一定是最好的方法,我希望有更好方法的合作伙伴可以提供信息