我到处寻找改变 Apache 上的 DocumentRoot 无济于事

Posted

技术标签:

【中文标题】我到处寻找改变 Apache 上的 DocumentRoot 无济于事【英文标题】:I looked everywhere to change DocumentRoot on Apache to no avail 【发布时间】:2014-11-17 04:55:22 【问题描述】:

我不知道我做错了什么,但我无法使用 Apache 更改本地主机文件的目录。我用 httpd.conf 尝试了各种方法,包括将“Order allow,deny”更改为 "Require all granted"。它仍然不起作用。

我正在运行 Windows 7 64 位并且我正在尝试让 Apache 工作,但由于错误 403,到目前为止所有解决方案都没有帮助我更改 DocumentRoot。

这里是httpd.conf

这是我最近一次服务重启后的错误日志

The Apache2.4 service is restarting. The Apache2.4 service has restarted. m_winnt:notice [pid5304:tid 468] AH00424: Parent: Received restart signal -- Restarting the server.
[Mon Sep 22 22:37:25.315061 2014] [ssl:warn] [pid 5304:tid 468] AH01909: localhost:443:0 server certificate does NOT include an ID which matches the server name
[Mon Sep 22 22:37:25.315061 2014] [mpm_winnt:notice] [pid 5304:tid 468] AH00455: Apache/2.4.10 (Win32) OpenSSL/1.0.1h configured -- resuming normal operations
[Mon Sep 22 22:37:25.315061 2014] [mpm_winnt:notice] [pid 5304:tid 468] AH00456: Apache Haus VC9 Server built: Jul 15 2014 20:34:18
[Mon Sep 22 22:37:25.315061 2014] [core:notice] [pid 5304:tid 468] AH00094: Command line: 'C:\\Apache24\\bin\\httpd.exe -d C:/Apache24'
[Mon Sep 22 22:37:25.317061 2014] [mpm_winnt:notice] [pid 5304:tid 468] AH00418: Parent: Created child process 3648
[Mon Sep 22 22:37:26.075104 2014] [ssl:warn] [pid 3648:tid 344] AH01909: localhost:443:0 server certificate does NOT include an ID which matches the server name
[Mon Sep 22 22:37:26.265115 2014] [mpm_winnt:notice] [pid 6612:tid 348] AH00364: Child: All worker threads have exited.
[Mon Sep 22 22:37:26.372121 2014] [ssl:warn] [pid 3648:tid 344] AH01909: localhost:443:0 server certificate does NOT include an ID which matches the server name
[Mon Sep 22 22:37:26.375121 2014] [mpm_winnt:notice] [pid 3648:tid 344] AH00354: Child: Starting 64 worker threads.
[Mon Sep 22 22:43:06.157556 2014] [autoindex:error] [pid 3648:tid 1052] [client ::1:53336] AH01276: Cannot serve directory C:/Apache24/htdocs/: No matching DirectoryIndex (index.html) found, and server-generated directory index forbidden by Options directive

【问题讨论】:

每次我保存 httpd 时,我都会 httpd -k 重启。我可以告诉重启工作,因为我可以使用它在默认 DocumentRoot 目录和自定义 DocumentRoot 目录之间切换。自定义总是导致 403 错误。 我认为我没有任何 .htaccess 文件(我在任何地方都找不到)。我不确定 webroot 是什么。 conf 已上传。 是的,我将包含我的 index.html 的文件夹命名为“localhost”。它位于“C:\”中。我不确定这是否是个坏主意。 日志中的最后一行准确地说明出了什么问题。您没有匹配的DirectoryIndex - 尝试在您的根目录中创建一个index.html 文件。您还应该能够通过更改 Options 指令来更改此行为。 查看以下链接:***.com/questions/5301776/… 和 ***.com/questions/10365520/… 【参考方案1】:

这样的配置应该可以工作:

DocumentRoot "C:/www"
<Directory "C:/www">
  Options Indexes FollowSymLinks MultiViews
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>

httpd.conf 文件进行任何更改后,不要忘记重新启动服务器。我还会尝试临时删除位于C:/www 文件夹中的任何现有.htaccess 文件。

要检查配置文件的语法是否正确,请使用-t 选项:

httpd -t

您还可以查看logs/error.log 以更好地了解问题所在。

参考文献

Installing Apache 2.2 on Microsoft Windows

【讨论】:

这是我得到的错误:无效命令“订单”,可能拼写错误或由未包含在服务器配置中的模块定义 尝试删除您当前的配置文件并将原始配置文件(虽然不知道它在 Windows 上的位置)复制到相同的位置,然后添加上述指令(将 www 更改为 localhost),保存该文件,然后重新启动您的服务器。 不起作用。我的目录必须在我的 apache 安装中吗? 不,这不是必需的,您是以管理员身份运行 apache 吗?我认为您应该尝试找到有关如何在 Windows 平台上最好地设置和配置 apache 的不错的指南。想到的另一件事是你应该检查一下,这样你就没有任何会搞砸的虚拟主机配置:***.com/questions/89118/… 我放弃了。我将找到一种在 Windows 上广泛使用的替代方案。我还将坚持使用默认的 htdocs 文件夹。【参考方案2】:

首先修改httpd.conf文件

DocumentRoot "c:/www"
<Directory "c:/www">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

然后打开“\conf\extra\httpd-vhosts.conf”文件。

<VirtualHost *:80>
    DocumentRoot "c:/Apache24/docs/dummy-host.example.com"
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:\www"
</VirtualHost>

最后重新启动你的 apache 网络服务器,一切顺利......

【讨论】:

以上是关于我到处寻找改变 Apache 上的 DocumentRoot 无济于事的主要内容,如果未能解决你的问题,请参考以下文章

iOS - MPMediaPickerController - 改变 barStyle

苹果减产iPhone X,三星到处寻找OLED新客户

RHEL 7 上的 Apache Bigtop 安装

不要再到处寻找了,Python 中涉及 pip 命令的用法都在这里

phpmyadmin 上的 laradock 错误 - 无法连接

如何在 apache 服务器上正确启用 mod_status?