Apache 2.4 localhost 虚拟主机不工作

Apache 2.4 localhost 虚拟主机不工作

我已经尝试解决这个问题好几天了。我只想能够使用以下命令引用我的本地测试环境:placeholder.test

我的 中有以下内容httpd-vhosts.conf

<VirtualHost *:80>
  DocumentRoot /root
  ServerName localhost

<Directory /root/site>
    RewriteEngine On
    RewriteRule ^([a-zA-Z0-9]+)$ index.php?action=$1
</Directory>

</VirtualHost>

这是可行的。我在其中添加了重写规则,因为网站设计为按这种方式工作,但我无法让虚拟主机工作placeholder.test

我的参赛作品placeholder.test如下:

<VirtualHost placeholdercms.test:80> 
    DocumentRoot /root/site
    ServerName placeholder.test
    ServerAlias www.placeholder.test

<Directory /root/site>
    RewriteEngine On
    RewriteRule ^([a-zA-Z0-9]+)$ index.php?action=$1
</Directory>

</VirtualHost>

此外,我还编辑了我的主机文件以包含以下内容:

127.0.01 localhost
::1 localhost
127.0.0.1 placeholder.test
127.0.0.1 www.placeholder.test

无论我做什么我都会得到:

此主机名 ( ) 的主机名解析 (DNS 查找)placeholder.test失败。

我觉得我遗漏了一些基本但至关重要的信息。如能得到任何帮助我将不胜感激。

答案1

似乎什么也没有apache 2.4 VirtualHost 示例文档这让我认为该指令支持 FQDN VirtualHost

我猜想该VirtualHost参数是 apache2 实例应该监听的属性。大多数人将其设置*为监听所有接口。如果需要,您甚至可以将其设置为特定于不同的接口,但似乎没有使用 FQDN 的示例。所以我将其更改为:

<VirtualHost *:80> 
   ...
</VirtualHost>

此外,您还必须为您的本地 /etc/hosts文件包含应该运行 apache2 实例的机器的 IP 地址。

答案2

我想我遗漏了一些基本但至关重要的信息。

是的。查看您提供的虚拟主机配置:

<VirtualHost placeholdercms.test:80> 
    DocumentRoot /root/site
    ServerName placeholder.test
    ServerAlias www.placeholder.test

<Directory /root/site>
    RewriteEngine On
    RewriteRule ^([a-zA-Z0-9]+)$ index.php?action=$1
</Directory>

</VirtualHost>

现在看看该配置的第一行:

<VirtualHost placeholdercms.test:80> 

placeholdercms.test就是设置失败的原因。只需将其更改为:

<VirtualHost *:80> 

*ServerName/组合ServerAlias适用于这样的虚拟主机设置。

相关内容