XAMPP 子域名突然不起作用

XAMPP 子域名突然不起作用

好吧,我有麻烦了......而且情况越来越糟!

我在 Windows 7 上运行 XAMPP。我在 localhost 上为不同的 Web 项目定义了大量子域;例如 xyz.localhost、abc.localhost 等。它们运行良好。我分两步添加每个子域:

  1. httpd-vhosts.conf我添加了一个如下所示的部分:

    <VirtualHost *>
        DocumentRoot "path/to/xampp/htdocs/xyz"
        ServerName xyz.localhost
    </VirtualHost>
    
  2. 我在我的 hosts 文件 (C:\Windows\System32\drivers\etc\hosts) 中添加了一个如下所示的条目:

    127.0.0.1 xyz.localhost
    

然后我重新启动 Apache。Bam。这一直有效,我不必了解这些文件的深层内部工作原理。

今天打开电脑,发现我的所有 localhost 子域名突然都无法使用了。Chrome 和 Firefox 都说找不到它们。但是,我仍然可以访问http://localhost,也可以使用 访问子域名文件夹http://127.0.0.1/xyz

经过一番挖掘,我在错误日志中发现了这个神秘的错误:

VirtualHost _default_:443 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results

因此我搜索了文件,发现其中httpd-ssl.conf有一个以 开头的部分<VirtualHost _default_:443>。但是,该文件多年来一直没有被修改过,所以这可能不是问题所在。

我尝试更改我的httpd-vhosts.conf文件:

  • NameVirtualHost *NameVirtualHost *:80,以及
  • <VirtualHost *><VirtualHost *:80>

但那没有用。

所以我随机想到,也许我应该在 中添加一个Listen 443httpd.conf这会导致 Apache 无法再启动,所以我将其删除了。

发生了什么事??什么可能发生变化?我应该赶紧补充一点,我甚至不知道端口 443 与 XAMPP 有什么关系。我从未使用 SSL 访问过任何本地站点,而且我不需要它。有人能帮助我吗?我正在黑暗中摸索。

答案1

对于那些不想在这个帖子中浪费时间的人,让我总结一下这个问题及其解决方案。:)

我突然无法访问使用 XAMPP 在 localhost 上创建的任何子域。我知道它们设置正确,因为它们在出现问题之前已经运行了很长时间。

问题最终出在我的 hosts 文件 (C:\Windows\System32\drivers\etc\hosts) 上。此文件用于手动输入 IP 地址/主机名对,绕过 DNS 服务器,在将子域添加到 localhost 时必须对其进行编辑(请参阅我的问题以了解如何执行此操作)。hosts 文件对格式的要求非常严格,我意识到该文件中的行尾已从CRLF(标准 Windows) 更改为CRCR。我注意到文件出现了双倍行距,但直到我查看十六进制并发现到处都是,我才发现原因0d0d。我能够在 Sublime Text 中修复行尾,一切又恢复正常。

我怀疑该文件被 Cisco AnyConnect 安全移动客户端破坏了。这是我最近安装的用于访问客户端 VPN 的 Cisco AnyConnect VPN 客户端的最新版本。我注意到我的主机文件中有一行新内容指定了该 VPN 的 IP,我认为当 Cisco 应用程序添加该行时,它破坏了整个文件的行尾。这是我的理论。

谢谢韦恩帮助我们解决问题。

答案2

根据我上面的评论。

  1. 下载 xampp v1.8.3-3 并安装到 C:\XAMPP
  2. 在 C:\XAMPP\htdocs\xampp 中创建了 3 个文件夹 (site1、site2、site3)。
  3. 在所有三个文件夹中创建虚拟 index.htm 文件,仅包含网站标题
  4. 编辑 C:\XAMPP\Apache\conf\extra\httpd-vhosts.conf 并使其如此

名称虚拟主机 *:80

<VirtualHost *:80>
DocumentRoot “C:/xampp/htdocs/xampp”
服务器名称 localhost
</VirtualHost>

<VirtualHost *:80>
DocumentRoot“C:/ xampp / htdocs / xampp / site1”
服务器名称 site1.localhost
</VirtualHost>

<VirtualHost *:80>
DocumentRoot “C:/xampp/htdocs/xampp/site2”
服务器名称 site2.localhost
</VirtualHost>

<VirtualHost *:80>
DocumentRoot “C:/xampp/htdocs/xampp/site3”
服务器名称 site3.localhost
</VirtualHost>

  1. 以管理员身份启动命令提示符
  2. 通过以下方式编辑主机:记事本 c:\windows\system32\drivers\etc\hosts
  3. 添加了以下几行

127.0.0.1 站点1.localhost
127.0.0.1 站点2.localhost
127.0.0.1 站点3.localhost

  1. 通过 XAMPP 控制面板启动 apache
  2. 验证所有 4 个站点正常运行:site1.localhost、site2.localhost、site3.localhost 和普通 localhost(xampp 问候页面)

诊断虚拟主机问题

  1. 检查 apache 日志文件
  2. 尝试 ping 站点并确保返回正确的 IP 地址。如果 ping 失败,通常是 DNS/主机文件条目问题
  3. 使用类似http 监视验证是否已为站点设置 http 标头 Host xxxx.xxxx

相关内容