unix + apache 上的子域名/虚拟主机问题

unix + apache 上的子域名/虚拟主机问题

我在设置子域名 (x.example.com) 时遇到了奇怪的困难。主站点运行正常,但无论我如何设置 VirtualHost 配置,尝试访问 x.example.com 时都会出现 404 错误。

NameVirtualHost *:80
<VirtualHost *:80>
 ServerName www.example.com
 DocumentRoot /var/www/example.com/htdocs
 ServerAlias example.com
</VirtualHost>

<VirtualHost *:80>
    ServerName x.example.com
    ErrorLog /var/logs/x-error-log
    CustomLog /var/logs/x-access-log common
    DocumentRoot /var/www/x/htdocs
</VirtualHost>

据我所知,这是一个原始设置。任何建议都值得赞赏。

答案1

我猜想新的 VirtualHost 不允许访问 DocumentRoot。您需要在 Virtualhost 设置中添加类似以下内容。

<Directory "/var/www/x/htdocs">
    Options Includes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

默认情况下,对文件系统的访问是被拒绝的;你的配置文件中的某处可能会有类似这样的内容:

<Directory "/">
    Options FollowSymLinks
    AllowOverride None
    order allow,deny
    deny from all
</Directory>

希望这可以帮助

答案2

尝试添加Alias x /var/www/x/htdocs到您的主站点。这将使您能够从主站点查看 x 内容(如果可用)。

如果目录或文件无法读取,则经常会出现 404。请检查文件系统上的目录权限。目录需要权限,如 755 或 750,具体取决于组。文件需要权限,如 644 或 640,具体取决于组。通常,Web 服务器的 ID(opten apache 或 www-data)不应拥有内容。通常将内容上的组设置为 Web 服务器的组。

检查目录权限配置。如果是 /var/www,则两个站点均已覆盖。如果是 /var/www/htdocs,则为 /var/www/x/htdocs 设置副本,或将其更改为 /var/www。

考虑在 /var/www/x/htdocs 上设置组粘性位,并对其执行递归 chgrp。

答案3

只是为了检查:

在您的 DNS 配置中创建一个 A 记录,以便您的子域解析为您的 IP 地址。

相关内容