我访问了我网站的子文件夹并收到了此错误:
PHP Warning: include_once(): Failed opening '/var/www/html//include/version.inc' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /srv/sparrow/php/include/branches.inc on line 3
似乎 $ _ SERVER ['DOCUMENT_ROOT'] 会返回错误的目录:
/var/www/html/
如果我访问 www.my.website/php ,这应该是 $ _ SERVER ['DOCUMENT_ROOT'] 应返回的预期目录:
/var/www/html/php/
这些是我的虚拟主机配置:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.mywebsite.com
DocumentRoot /var/www/html/
<Directory /var/www/html/>
Options -Indexes -MultiViews
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName www.mywebsite.com/ph
# Webroot of PHP site
DocumentRoot /var/www/html/php/
<Directory /var/www/html/php/>
Options -Indexes -MultiViews
</Directory>
</VirtualHost>
如何配置我的虚拟主机配置,如果我访问www.my.website/php,它应该返回值为/ var / www / html / php /的文档引用?
谢谢你们!
答案 0 :(得分:1)
端口80上有两个虚拟主机。第一场胜利。您应该通过IP,服务器名称或端口区分它们。如果两个都在同一个端口上运行,那么如果您使用的是Apache 2.2(2.4不是必需的话),那么您还需要NameVirtualHost 80
。
我很确定,如果您更换虚拟主机,/var/www/html/php/
将获得$_SERVER['DOCUMENT_ROOT']
但仍然: 如果您有两个虚拟主机,请将它们区分开来!
<强>更新强>
在上层虚拟主机中进行额外重写(需要激活mod_rewrite
),因此您可以删除第二个虚拟主机:
RewriteEngine On
RewriteRule ^/ph/(.*)$ http://www.mywebsite.com/ph/$1 [R=301,L]
或[P,L]
如果您想要隐藏您正在重写,但[P]
也需要激活mod_proxy
。