Apache虚拟主机和本地主机

Apache虚拟主机和本地主机,apache,localhost,virtualhost,Apache,Localhost,Virtualhost,我在Mac OS X上与XAMPP合作 我正在尝试为客户正确运行一个网站,但我真的不知道Symfony(现在)。我只想安装并启动它 我已通过以下方式更改了我的文件: 127.0.0.1 www.mysite.local 以及httpd.conf文件,如下所示: 127.0.0.1 www.mysite.local 服务器名www.mysite.local DocumentRoot/Applications/MAMP/htdocs/mysite/web DirectoryIndex.php

我在Mac OS X上与XAMPP合作

我正在尝试为客户正确运行一个网站,但我真的不知道Symfony(现在)。我只想安装并启动它

我已通过以下方式更改了我的文件:

127.0.0.1 www.mysite.local
以及httpd.conf文件,如下所示:

127.0.0.1 www.mysite.local

服务器名www.mysite.local
DocumentRoot/Applications/MAMP/htdocs/mysite/web
DirectoryIndex.php
允许超越所有
通融
别名/sf/Applications/MAMP/htdocs/mysite/lib/vendor/symfony/data/web/sf
允许超越所有
通融
现在,该站点正在运行(耶!),但我无法再访问任何其他本地站点,因为localhost呈现为

我错在哪里?
谢谢大家!

根据本文件:

您可能缺少以下指令:

NameVirtualHost *:80

这是正常的,如果你看到它。由于它是第一个虚拟主机条目,因此将显示本地主机

例如,假设您不希望该页面显示。您只想显示“Apache,it works”页面,因此您可以在mysite.local之前创建一个vhost条目作为本地主机,并将其指向“it works”页面


但这是正常的。我以前有过这个问题,所以别担心

localhost
将始终重定向到
127.0.0.1
。您可以通过将其他VirtualHost命名为其他本地回圈地址(如
127.0.0.2
)来实现这一点。确保您还更改了相应的
主机
文件以实现此功能

例如,我的
httpd vhosts.conf
如下所示:

127.0.0.2 intranet.dev

DocumentRoot“D:/6.应用程序数据/XAMPP共享/htdocs/intranet”
ServerName intranet.dev
ServerAlias www.intranet.dev
ErrorLog“logs/intranet.dev error.log”
CustomLog“logs/intranet.dec access.log”组合
选项索引如下SYMLINKS ExecCGI包括
命令允许,拒绝
通融
允许超越所有
要求所有授权
(请注意,在
第一节中键入了
127.0.0.2:80
。这意味着VirtualHost的此块将只影响对IP地址
127.0.0.2
端口
80
的请求,IP地址是HTTP的默认端口

要正确路由名称
intranet.dev
,我的
hosts
入口行如下所示:

127.0.0.2 intranet.dev

这样,它将阻止您为
localhost
创建另一个VirtualHost块,这是不必要的。

您可能需要使用以下方法:


DocumentRoot“somepath\Apache2.2\htdocs”
服务器名本地主机
作为您的第一个虚拟主机(将其放在其他虚拟主机之前)。

这对我很有用

运行
http://localhost/projectName


服务器管理本地主机
DocumentRoot路径/to/htdocs/
服务器名本地主机
运行
http://somewebsite.com
本地


服务器管理员webmaster@example.com
DocumentRoot/path/to/htdocs/somewebsiteFolder
服务器名www.somewebsite.com
服务器别名somewebsite.com
其他网站也一样


服务器管理员webmaster@example.com
DocumentRoot/path/to/htdocs/anotherSiteFolder
服务器名www.anothersite.local
ServerAlias anothersite.com

对于执行此处描述的所有操作但仍无法访问的用户:

带有Apache HTTP Server 2.4的XAMPP:

在文件httpd-vhost.conf中:


DocumentRoot“D:/xampp/htdocs/dir”
ServerName.dev
Require all-grated#apache v 2.4.4仅使用此

这里不需要端口或IP地址。Apache在其自己的文件中配置它。不需要NameVirtualHost*:80;它已被弃用。您可以使用它,但没有任何区别

然后,要编辑主机,您必须以管理员身份运行(如下所述)。如果您在未执行此操作的情况下编辑文件,则您正在编辑一个伪文件,而不是原始文件(是的,它会保存等,但它不是真实的文件)

在Windows中:

找到记事本图标,右键单击,以管理员身份运行,打开文件,转到C:/WINDOWS/system32/driver/etc/hosts,选中“查看所有文件”,然后打开主机。

如果您以前在何处编辑它,可能会看到它不是您以前在未以管理员身份运行时编辑的文件


然后要检查Apache是否正在读取您的httpd vhost.conf,请转到文件夹xampFolder/Apache/bin,按住Shift键并单击鼠标右键,在此处打开一个终端命令,然后打开XAMPP(就像您通常做的那样),启动Apache,然后在命令行上键入
httpd-S
。您将看到虚拟主机的列表。只需检查您的something.dev是否存在。

这可能是因为您的web文件夹(如前所述“/Applications/MAMP/htdocs/mysite/web”)为空

我的建议是首先制作项目,然后制作虚拟主机


我遇到了类似的情况。我在httpd vhosts.confiz中使用了DocumentRoot中的一个空文件夹,无法访问我的shahg101.com站点。

在使用virtualHost时,我遇到了访问本地主机的相同问题。我通过在virtualHost侦听代码l中添加名称解决了这个问题如下:

在我的hosts文件中,我添加了以下代码(C:\Windows\System32\drivers\etc\hosts)-

在我的httpd.conf中,我添加了以下代码:

<VirtualHost main_live:80>
    DocumentRoot H:/wamp/www/raj/main_live/
    ServerName main_live
</VirtualHost>

DocumentRoot H:/wamp/www/raj/main\u live/
服务器名主服务器
就是这样。它可以工作,我可以同时使用localhostphpmyadmin,以及main\u live(我的虚拟项目)。

我正在运行(Xenial Xerus)。这就是我的工作原理:

  • 打开一个终端和cd到可用的
    /etc/apache2/站点
    你
    
    # Main host
    <VirtualHost *:80>
        ServerName localhost
        DocumentRoot "/xampp/htdocs"
    </VirtualHost>
    
    # Additional host
    <VirtualHost *:80>
        # Over directives there
    </VirtualHost>
    
    <VirtualHost site.com:80>
      DocumentRoot "C:/Bitnami/apache2/htdocs/site/docroot"
      
      <Directory "C:/Bitnami/apache2/htdocs/site/docroot">
        Options Indexes FollowSymLinks
        AllowOverride All
        <IfVersion < 2.3 >
          Order allow,deny                          
          Allow from all
        </IfVersion>
        <IfVersion >= 2.3 >
          Require all granted
        </IfVersion>
      </Directory>
    </VirtualHost>