自从电脑更换为mac后, 一直没有时间去配置php的环境。导致每次要更改php代码的时候, 都是本地更改,然后直接推送到服务器上运行 这样的开发和测试及其耗时且繁琐, 所以早上特地决定弄好mac下的php开发环境,毕竟磨刀不误砍柴工,一劳永逸嘛。

下载按照好mamp后,选择web服务器为apache。更改配置文件httpd.conf,添加相应的加载moudle。打开虚拟配置。httpd-vhost.conf,因为当前的项目存在两个独立的项目,分别是front.xxx.local.admin.xxx.local

httpd-vhost.conf配置如下:

#
# Virtual Hosts
#
# 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.2/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. #
# Use name-based virtual hosting.
#
#NameVirtualHost *: #
# 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 *:>
DocumentRoot "/Users/fly_popc/Desktop/code/front/web"
ServerName front.xxx.local
ServerAlias front.xxx.local
<Directory "/Users/fly_popc/Desktop/code/front/web">
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
</Directory>
</VirtualHost> <VirtualHost *:>
DocumentRoot "/Users/fly_popc/Desktop/code/admin/web"
ServerName admin.xxx.local
ServerAlias admin.xxx.local
<Directory "/Users/fly_popc/Desktop/code/admin/web">
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
</Directory>
</VirtualHost>

重启apache后,环境运行正常。

但是...

当访问后台项目的时候,却一直路由到了第一个地址上, 也就是apache配置多个域名指向的虚拟主机访问总是指向第一个虚拟主机。查询了好几个帖子后,依然不能解决问题。最后终于了解到有个配置没有打开,那就是:

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

本着追本溯源的精神, 查询了下这个配置的意思,得到的原因如下:

NameVirtualHost 如果没有这个,<VirtualHost>标签就没什么作用。基于域名访问的情况,若是基于IP访问的,以第一个指定IP的VirtualHost为准,每个IP可以单独指定)一个NameVirtualHost 可以对用多个<VirtualHost>,每个<VirtualHost>必须有自己的NameVirtualHostNameVirutalHost *:80制定这个主机的IP和端口,如果服务器上有多个IP,就可以制定某个IP的某个端口是哪个主机。(新版的Apache已经去除了NameVirtualHost 这个配置,因为确实没什么用,参数在VirtualHost中都已经指明了)。

至此打开浏览器,分别访问http://front.xxx.local 和http://admin.xxx.local 都能各自访问到对应的页面,大功告成!下面记录下整个流程.

1.先要在httpd.conf(这个是Apache 总的配置文件)中,将虚拟路径的注释去掉。
#Include etc/extra/httpd-vhosts.conf
使httpd-vhosts.conf文件起作用,或者直接在httpd.conf中写配置也可以,但不建议这么做。
相关的配置有:Listen NameVirtualHost <VirtualHost>

2.Listen要监听的端口,多个端口,要写多个Listen;否则Apache启动的时候,不会启动相应的套接字。

比如

Listen
Listen

3.NameVirtualHost 如果没有这个,<VirtualHost>标签就没什么作用。

4.最关键的VirtualHost。
重要:Apache 在接受到请求时,首先会默认第一个VirtualHost,然后再找匹配的,如果没有匹配的,就是第一个VirtualHost起作用。
因此在httpd.conf中,将<Dicrectory />(这个是所有目录的默认配置)
和<Direcotry /opt/lampp/htdocs>的权限,都是deny from all.作为默认;或者直接在httpd.conf中配置

<Directory />
Options Indexes FollowSymLinks
AllowOverride All
</Directory>

至此,项目就能正常运行起来了!

Apache VirtualHost的配置的更多相关文章

  1. Apache22中配置虚拟主机(Apache VirtualHost)

    Apache VirtualHost的作用就是可以让一个apache为多个域名服务,相当于一个服务器挂了N多个网站,举个例子: 我的apache服务器,ip为x.x.x.x,我有两个域名www.too ...

  2. Apache多站点配置及启动失败解决办法

    一. Apache多站点配置方法 1.打开Apache安装目录下conf/httpd.conf文件,找到下面两行文字,把最前面的 # 号去掉,然后保存. #LoadModule vhost_alias ...

  3. Apache安装及配置ssl

    目录 1.windows安装 软件准备 安装apache 开启ssl(Https访问) 打开httpd.conf,解除下面配置的注释 查看ssl模块使用哪一个配置文件 配置https虚拟主机 简单配置 ...

  4. 配置apache apache服务器如何配置多站点

    http://jingyan.baidu.com/article/5225f26b07605be6fa090890.html 让Apache在启动时能加载虚拟主机模块. 打开Apache安装目录下co ...

  5. wamp apache 的虚拟机配置 多域名访问 的 三部曲

    wamp apache 的虚拟机配置 多域名访问 的 三部曲 wamp:       1:C:\WINDOWS\system32\drivers\etc->hosts         加入自己的 ...

  6. apache多站点配置

    apache多站点配置 临时需要个测试站,然后就到apache中配置vhosts,结果这货总是显示"拒绝了你的请求",找半天发现居然还要添加端口监听 vhosts.conf 添加v ...

  7. Apache虚拟主机配置

    在一个Apache服务器上可以配置多个虚拟主机,实现一个服务器提供多站点服务,其实就是访问同一个服务器上的不同目录.Apache虚拟主机配置有3中方法:基于IP配置.基于域名配置和基于端口配置,这里介 ...

  8. nginx 反向代理 与 Apache backend的配置联合配置

    nginx 反向代理 与 Apache backend的配置联合配置: 说明: nginx 将http映射到Apache上的特定子目录. 配置方法步骤: 1.  设置域名, 子域名映射到指定服务器ip ...

  9. Windows下Apache+mod_python+Django配置

    Windows下Apache+mod_python+Django配置 Apache 首先要安装Apache,我安装的版本是2.2.*: Python python肯定是要安装的,我安装的版本是2.5的 ...

随机推荐

  1. 20155312 2006-2007-2 《Java程序设计》第二周学习总结

    20155312 2006-2007-2 <Java程序设计>第二周学习总结 课堂内容总结 git:版本控制 生活中的容灾备份 归纳思维.实验思维.计算思维 计算机:实现自动化 学会使用快 ...

  2. 2018.10.27 bzoj3209: 花神的数论题(数位dp)

    传送门 数位dpdpdp经典题. 题面已经暗示了我们按照二进制位来数位dpdpdp. 直接dpdpdp多少个数有111个111,222个111,333个111-, 然后快速幂算就行了. 于是我们枚举前 ...

  3. boost-容器

    1.array array相当于是一个增加了STL容器接口的数组,但它不像vector等容器一样可以动态增长,如果需要动态变动array的容量可以使用boost::scoped_array.array ...

  4. w7 目录

    第17章 期中架构体系介绍 期中架构环境准备 01-期中架构内容简介 02-期中架构大酒楼详解 03-期中架构使用到的软件简介 04-期中架构运维角度观察与使用的软件 05-重头开始创建一台新的虚拟机 ...

  5. 第29章:MongoDB-索引--全文索引

    ①全文索引 全文索引是用于对长文本检索来使用的,是用正则表达式只能对字符串类型的值进行检索.注意:创建索引是一件比较耗时耗费资源的事情,而全文索引更是耗时更厉害,如果对索引键的内容比较长,需要对内容进 ...

  6. HDU 5321 Beautiful Set (莫比乌斯反演 + 逆元 + 组合数学)

    题意:给定一个 n 个数的集合,然后让你求两个值, 1.是将这个集合的数进行全排列后的每个区间的gcd之和. 2.是求这个集合的所有的子集的gcd乘以子集大小的和. 析:对于先求出len,len[i] ...

  7. javascript的Mixins

    mixin在javascript里可以看作是一种从别的对象"借用"功能的方法.每一个新定义的对象都有一个 prototype属性,其他的对象就可以从这里"借用" ...

  8. 2018-01-06自定义view时遇到的问题

    1.设置蒙版的简单写法: 2.

  9. Forward团队-爬虫豆瓣top250项目-团队编程项目开发环境搭建过程

    本次结对编程和团队项目我都需要用python环境,所以环境的搭建是一样的.(本文部分内容引用自己博客:http://www.cnblogs.com/xingyunqi/p/7527411.html) ...

  10. POJ3616--Milking Time(动态规划)

    Bessie is such a hard-working cow. In fact, she is so focused on maximizing her productivity that sh ...