配置中定义的 Apache 文档根目录未被使用

配置中定义的 Apache 文档根目录未被使用

我很快就想不出如何解决这个问题了。我希望我已经提供了足够的信息,但如果我遗漏了任何内容,请告诉我。

虽然我现在没有多个域名,但我希望将来能够在我的 apache 服务器上拥有另一个虚拟主机,所以我希望我的文件结构如下所示:

/var/www/
    |myname
        |index.html
    |coolwebsitethatdoesntexistyet
        |index.html

截至目前,只有 myname.com 可用(我的真名很难拼写)

Apache 默认在 提供文件/var/www/html/index.html,但我想提供/var/www/myname/index.html

所以/etc/apache2/apache2.conf 文件看起来像这样:

Listen 80
<VirtualHost *:80>
    DocumentRoot "/var/www/myname"
    ServerName myname.com
    ServerAlias www.myname.com
    DirectoryIndex index.html
    <Directory "/var/www/myname">
        AllowOverride All
        Options Indexes FollowSymLinks Includes ExecCGI
        Require all granted
        Order allow,deny
        # Any other directives
    </Directory>
    # Other directives here
</VirtualHost>

即使更改了 apache2.conf(并重新启动了 apache),myname.com 仍然指向 var/www/html/index.html

如果我是对的,我相信000-default.conf如果没有apache2.conf.

所以我编辑了与当时000-default.conf相同的内容,apache2.conf看看它是否有效。结果没有。

更多信息请见以下输出grep -r DocumentRoot /etc

/etc/apache2/apache2.conf: DocumentRoot /var/www/myname
/etc/apache2/sites-available/default-ssl.conf: DocumentRoot /var/www/ht                                                                                                                                                             ml
/etc/apache2/sites-available/myname.com.conf: DocumentRoot /var/www/html/myname.com/public_html
/etc/apache2/sites-available/000-default.conf: DocumentRoot "/var/www/myname"

输出 sudo apache2ctl -S

VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server myname.com (/etc/apache2/sites-enabled/000-default.conf:2)
         port 80 namevhost myname.com (/etc/apache2/sites-enabled/000-default.conf:2)
                 alias www.myname.com
         port 80 namevhost myname.com (/etc/apache2/apache2.conf:219)
                 alias www.myname.com
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex watchdog-callback: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

总结:阅读粗体

提前致谢!

答案1

TL;DR 我读了粗体部分,但无论如何,这些是我的建议。

我希望我的文件结构看起来像这样:

/var/www/
    |myname
        |index.html
    |coolwebsitethatdoesntexistyet
        |index.html

我建议配置 Apache 类似于以下内容:

  • 在下apache2.conf,将您的设置ServerName为主机名其他比例如mysite.com。这不必是可访问的主机名(即,您可以使用像 ex.Sam或 这样的简单名称Neo)。将您的设置DocumentRoot/var/www。您可以index.html根据需要将文件放入其中。

  • 在 下000-default.conf,将您的 设置ServerNamemysite.com。将您的 设置DocumentRoot/var/www/myname

  • 如果您想要第二个虚拟主机,请在下方创建一个新的虚拟主机sites-available,并赋予其唯一的ServerName(例如coolwebsite.com)和适当的DocumentRoot(例如/var/www/coolwebsitethatdoesntexistyet)。

嗯,显然...

  • .conf对任何文件进行更改后,重新启动 Apache 。

  • 如果您想测试,请不要忘记启用您的第二个站点。

  • 任何没有与之关联的 DNS 条目的站点名称(例如coolsite.com)都需要添加到您的hosts文件中以用于测试目的。

笔记

  • 如果您希望目录权限更加安全,请尝试var/www/html与您的虚拟主机apache2.conf一起使用,即使这只是为了测试。/var/www/html/myname/var/www/html/coolwebsitethatdoesntexistyet

  • 即使这不起作用,这种配置也应该可以消除 Apache 的任何简单问题。

相关内容