我有一个域,即test.example.com。
我用uisng设置我的服务器的主机名为:
hostname test.example.com
然后我在/etc/httpd/conf/httpd.conf中添加一个虚拟主机
NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /var/www/html/ </VirtualHost> <VirtualHost *:80> DocumentRoot /var/www/html/mydir ServerName test.example.com ServerAlias www.test.example.com </VirtualHost>
然后我重新启动Httpd服务。 如果我尝试访问test.example.com,我得到index.php / var / www / html而不是指定的文件夹。 如果我将主机名更改为除此之外的其他内容,然后重新启动httpd,则虚拟主机将按预期工作,所以我只能假定在有主机名的传入连接时,apache会剥离该url。
在PHP打印时
$_SERVER['REQUEST_URI'] $_SERVER['REDIRECT_URL']
我得到/。 谁能告诉我如何才能克服这个问题,或者我应该保持主机名设置为别的? 我有一个使用主机名作为目录名的备份脚本,所以我可以很好地组织备份,这是我首先更改主机名的主要原因。
在你的情况下,我会取代
NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /var/www/html/ </VirtualHost> <VirtualHost *:80> DocumentRoot /var/www/html/mydir ServerName test.example.com ServerAlias www.test.example.com </VirtualHost>
通过
<VirtualHost *:80> DocumentRoot /var/www/html/mydir ServerName test.example.com ServerAlias www.test.example.com </VirtualHost> # /!\ THIS HAS TO BE ON THE LAST POSITION /!\ <VirtualHost *:80 *:443> ServerName localhost ServerAlias * DocumentRoot /var/www/html/ </VirtualHost>
像test.example.com&www.test.example.com以外的所有请求都将提供/ var / www / html /
更多信息: NameVirtualHost在你的情况下没有用,并且已经在Apache 2.4中被删除了https://httpd.apache.org/docs/2.4/en/upgrading.html
我会build议改变:
<VirtualHost *:80> DocumentRoot /var/www/html/ </VirtualHost>
至 :
<VirtualHost *:80> DocumentRoot /var/www/html/ ServerName example.com ServerAlias www.example.com </VirtualHost>
我已经多次在客户服务器上看到这个问题,并解决了这个问题。
我通常将虚拟主机条目的服务器名称指向即将到来或未来的PHP文件主目录的目录,直到准备好将服务器或网站直播为止,因为它将优先于将来的任何条目。