我到处寻找改变 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
不要再到处寻找了,Python 中涉及 pip 命令的用法都在这里