我有指向服务器的 URL(example.com:8010),它可以正常工作并转到 /var/www 目录。我创建了另一个 vhost 文件以转到测试目录,但当我使用子域输入该 URL 时,它不起作用(test.example.com:8010),只有使用斜线输入它才有效(example.com:8010/test)。
编辑:我忘了提的是,当我做转到 test.example.com:8010 它会转到默认的 /var/www 文件夹,而输入 text.example.com:8010/test 显然会转到测试文件夹。
以下是这两个条目的虚拟主机:
Example.com -
<VirtualHost *:80>
ServerName example.com
ServerAdmin [email protected]
DocumentRoot /var/www
<Directory /var/www/>
AllowOverride All
Order Deny,Allow
Allow from All
</Directory>
</VirtualHost>
<VirtualHost *:8010>
ServerName example.com
ServerAdmin [email protected]
DocumentRoot /var/www
<Directory /var/www/>
AllowOverride All
Order Deny,Allow
Allow from All
</Directory>
</VirtualHost>
Test.Example.com -
<VirtualHost *:80>
ServerName test.example.com
ServerAdmin [email protected]
DocumentRoot /var/www/test
<Directory /var/www/test/>
AllowOverride All
Order Deny,Allow
Allow from All
</Directory>
</VirtualHost>
<VirtualHost *:8010>
ServerName test.example.com
ServerAdmin [email protected]
DocumentRoot /var/www/test
<Directory /var/www/test/>
AllowOverride All
Order Deny,Allow
Allow from All
</Directory>
</VirtualHost>
我还应该提到,我为该测试目录设置了另一个 vhost,以便我可以在我的本地网络上输入 test.lacol 并且它会转到该目录,这样就可以了:
<VirtualHost *:80>
ServerName test.lacol
ServerAdmin [email protected]
DocumentRoot /var/www/test
<Directory /var/www/test/>
AllowOverride All
Order Deny,Allow
Allow from All
</Directory>
</VirtualHost>
<VirtualHost *:8010>
ServerName test.lacol
ServerAdmin [email protected]
DocumentRoot /var/www/test
<Directory /var/www/test/>
AllowOverride All
Order Deny,Allow
Allow from All
</Directory>
</VirtualHost>
答案1
http://httpd.apache.org/docs/2.2/vhosts/examples.html
看起来你<VirtualHost> *:80>
拼写错误了。应该是<VirtualHost *:80>
答案2
您是否已配置了 上的站点/etc/hosts
?如果已配置,请查看您的php.ini
并查找您的open_basedir
配置。open_basedir, if set, limits all file operations to the defined directory and below
。
如果没有定义,请查看你的/var/log/apache2/error.log
。也许它可以帮助你。
答案3
我必须启用该网站。
sudo a2ensite example.com