我想知道Apache httpd虚拟主机如何工作。我使用wampserver进行Web开发,但是一切正常,但是有一天,httpd虚拟主机似乎由于未知原因而无法正常工作。我正在使用一些重写规则,但是想知道为什么即使重新启动所有东西(wamp,pc,server)后,我编写的任何内容也不起作用,并且以前起作用的任何规则也都停止了工作。 http-vhosts.conf如下:
<VirtualHost 127.0.0.1:8080>
ServerName localhost
ServerAlias localhost
DocumentRoot "c:/wamp64/www"
<Directory "c:/wamp64/www/">
Options -Indexes +Includes -FollowSymLinks -MultiViews
AllowOverride None
Require all denied
</Directory>
</VirtualHost>
要对其进行测试,我将其设置为“要求所有被拒绝”并转到我的本地主机:8080,但是我仍然可以访问我的站点,而不是403禁止访问。我还尝试了添加和删除索引之类的选项,但没有任何效果。 在我继续测试,重新启动wampserver时,将有随机机会与我的设置“要求全部拒绝”一起工作,并显示403在本地主机上被禁止,但是,一旦我重新启动,就不会遵循我的设置。 wampserver全部包含在一个软件包中(apache,mysql,php),我不确定我是否错过有关apache工作原理的任何信息。 我正在使用Windows 10 wampserver,Apache 2.4版 httpd.conf中的“ include conf / extra / httpd-vhosts.conf”未注释。 事先在同一端口上添加了一个新的虚拟主机(但随后删除了),不确定是否会导致问题。请帮助
答案 0 :(得分:1)
好像您一直在弄乱httpd-vhosts.conf
文件并弄得一团糟。
这是开箱即用(WAMPServer V3)的外观
<VirtualHost *:80>
ServerName localhost
ServerAlias localhost
DocumentRoot "${INSTALL_DIR}/www"
<Directory "${INSTALL_DIR}/www/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
通过设置Require all denied
,任何内容都不应进入该域,因为这告诉Apache拒绝从任何地方进行访问。如果它不拒绝访问,也许您也弄乱了httpd.conf
文件。
在其他情况下设置AllowOverride None
告诉Apache即使存在,也不要看.htaccess
。
我可以建议您在进行更改之前先使用The Apache Manual来检查进行更改时会发生什么,而不要使用这种散布枪方法。
也应该没有理由使用端口8080而不是默认端口80。使用端口80还会使很多事情复杂化。
如果其他端口已捕获端口80,则很可能是IIS,如果您不使用IIS,则可以安全地将其卸载或禁用,从而允许将端口80用于Apache。
答案 1 :(得分:0)
这是一个古老的问题,但是当我遇到相同的问题时,我认为我可以通过添加回复来帮忙。
Windows用户遇到的麻烦是文件权限和所有权。仅仅因为您拥有唯一的用户所在的服务器(或用于运行Apache的便携式计算机或PC),并不意味着所有操作都以您的用户身份运行。实际上,Apache作为系统进程运行。因此,如果您在原始文章中以用户身份创建了路径c:/ wamp64 / www,则必须确保运行Apache的系统进程可以读取该目录。我这里没有在Windows PC上安装Apache-实际上,我认为我在工作用的政府笔记本电脑之外没有Windows PC-但您需要使用服务,找到Apache Web服务,找出运行它的用户,然后转到您的路径,再次以c:/ wamp64 / www为例,然后右键单击www目录文件夹,从上下文菜单中选择“属性”,然后转到“安全性”选项卡并检查是否列出了Apache服务用户。如果是这样,请检查“权限”选项卡。不要害怕检查“高级”按钮并查看其中的权限。您的apache用户应具有读取和执行权限,以允许Web服务器在目录链中上移和下移。在Linux上,您可以将整棵树切为apache守护程序运行身份用户,或者将group属性更改为守护程序的组,然后更改权限以允许该组用户在那里读取和执行文件。您可以保留所有权一个人,但我发现这经常会带来更多问题。基本上, chmod -R 755 my / htdocs / root 和( chown -R myuser:daemongroup my / htdocs / root 或 chown -R daemonuser:daemongroup my / htdocs / root )将起作用。