我无法在 Apache 中创建可用的子域。在发帖之前,我搜索了互联网,阅读了堆栈网站上的大量类似问题,询问了 chatgpt,阅读了 Apache 文档并尝试了各种不同的配置。(当然,我httpd
每次都重新启动 :)
但我陷入了困境。我可以说我在 Linux 方面经验丰富,但在 Apache 方面却是新手。此外,许多在线资源都是从 Debian 的角度编写的,这与 RedHat 有很大不同。
我的环境
我将其用作主机Manjaro
操作系统。我已在 Virtual Box 中运行。这是全新安装,因此过去没有错误配置。Rocky9 minimal
httpd
我想要实现的目标
我想从我的主机访问两个不同的网页。
idd.ph
应该显示/var/www/html/index.html
example.idd.ph
应该显示/var/www/example/index.html
然而,我对两个子域名总是得到相同的结果index.html
。
idd.ph
返回/var/www/example/index.html
example.idd.ph
还返回/var/www/example/index.html
如果我切换顺序VirtualHosts
,我将获得/var/www/html/index.html
两个子域。
我的设置
idd.ph
是一个任意域,它设置/etc/hosts
在我的Manjaro主机上:
192.168.0.109 idd.ph
192.168.0.109 example.idd.ph
在Rockynormal.conf
上我创建了一个文件/etc/httpd/conf.d
<VirtualHost *:80>
ServerName example.localhost
DocumentRoot /var/www/example
</VirtualHost>
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www/html
</VirtualHost>
/var/www
以下是Rocky的结构:
.
├── cgi-bin
├── example
│ └── index.html
└── html
└── index.html
我也/etc/hosts
对Rocky进行了如下编辑:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 example.localhost
先感谢您。
正如您在
hosts
文件中所看到的:您应该在 apache 配置中添加以下内容:
apache 中的主机名应该与 DNS 解析名称相匹配。
如果您进行更改,
hosts
则会破坏本地解析(无法从同一台机器看到 http 主机)。如果您有外部名称源(如 DNS),其余机器将访问 apache。