Wampserver在交换使用Vhost后显示404错误

时间:2014-06-26 15:16:16

标签: apache wampserver

所以我使用Wampserver进行开发,我设法将服务器设置为开发目的(它与Dreamweaver一起使用,PHP工作等)但是当访问localhost时,我收到404错误。

我几乎没有更改设置,除了将其设置为使用该vhosts文件,然后我在系统32的hosts文件中创建了一些新主机,这些都可以正常工作。

然而,

localhost / phpmyadmin确实有效,所以我真的很难过为什么它不会加载任何东西。我也尝试加载其中一个站点文件夹(localhost / Rufus),它还返回了404.我需要指向www文件夹的所有目录,其中保存了我的所有文件。

在有人说之前,没有它不是Skype或IIS,因为它们都已关闭,而Wampserver正在端口80上运行(我检查过)

我的vhosts文件:

# Virtual Hosts
#
# Required modules: mod_log_config

# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at 
# <URL:http://httpd.apache.org/docs/2.4/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "c:/Apache24/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error.log"
    CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "c:/Apache24/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error.log"
    CustomLog "logs/dummy-host2.example.com-access.log" common
</VirtualHost>

<Directory C:\Users\Tom\sites\wamp\www>
Order Deny,Allow   
Allow from all 
</Directory>

<VirtualHost *:80>   
DocumentRoot "C:\Users\Tom\sites\wamp\www\Rufus" 
ServerName rufus.stone 
</VirtualHost>

2 个答案:

答案 0 :(得分:0)

删除示例虚拟主机,假设您没有使用它们。您还需要“localhost”的虚拟主机,它必须是第一个虚拟主机。之后,您可以包含其他自定义虚拟主机。

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot "C:\Users\Tom\sites\wamp\www"
    ServerName localhost
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:\Users\Tom\sites\wamp\www\Rufus" 
    ServerName rufus.stone
</VirtualHost>

如果您收到权限被拒绝错误,请尝试将我取出的指令放入您的httpd.conf:

<Directory "C:\Users\Tom\sites\wamp\www">
    Order Deny,Allow
    Allow from all
</Directory>

根据类似的指令,它会在根目录中包含所有人的拒绝。

确保在对这些文件进行更改时始终重新启动Apache。

答案 1 :(得分:0)

错误404表示您尚未授予对这些虚拟主机的访问权限,因此Apache正在将您踢出去。

您需要向虚拟主机提供一些信息,以告知Apache哪些位置可以访问每个VHOST

您还需要将localhost设置为虚拟主机,并且因为第一个VHOST是默认的VHOST,它应该是您定义的第一个,并且应始终限制为仅允许从本地计算机访问。

所以看看这是否有效。

# Virtual Hosts
#

<VirtualHost *:80>
    DocumentRoot "C:\Users\Tom\sites\wamp\www"
    ServerName localhost
    <Directory "C:\Users\Tom\sites\wamp\www">
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:\Users\Tom\sites\wamp\www\Rufus" 
    ServerName rufus.stone
    <Directory "C:\Users\Tom\sites\wamp\www\Rufus>
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>

Require local表示只允许从运行WAMPServer的PC进行访问。 如果稍后您想允许内部网络上的其他PC看到Apache服务器,您可以添加到这样的服务器,例如。

Require local
Require ip 192.168.1

假设您在子网192.168.1.?,这将允许连接到您的路由器(有线或无线)的任何PC访问服务器。

你应该避免这些,除非你真的希望世界访问你的网站

Require all granted

或Apache 2.2语法,它仍适用于Apache 2.4

Order Deny,Allow   
Allow from all