Apache配置虚拟目录和多主机头的方法

了解一下根目录和虚拟目录的关系:
安装过apache之后打开httpd.conf文件会发现DocumentRoot默认设置的应该是apache安装目录中的htdocs文件夹。然后你的网页就可以放大这个htdocs文件夹中测试,例你在里面放了一个1.PHP,可以输入http://127.0.0.1/1.php进行测试。这个DocumentRoot后面的路径就是apache的根目录。有时候我们不想将自己的网站放到这里,例如我想要放到F:/MyPHP中来运行,那么就可以修改DocumentRoot为F:/MyPHP,然后将那个1.php放入F:/MyPHP文件夹,同样使用http://127.0.0.1/1.php可以正常访问。

虚拟目录是什么?顾名思义只是一个虚拟的目录,和真实目录是有差别的。先来看看使用真实目录访问,我们在刚才的F:/MyPHP中建立一个文件夹Test,然后在里面放入2.php,这个时候就可以通过http://127.0.0.1/Test/2.php访问。但是有些时候你可能建立的文件夹和想要输入的访问地址有一个映射关系,而不是直接输入Test文件夹名,这样做的原因有很多其中就有一个是安全问题,因为那样别人就会知道你的根目录的文件夹。具体点,你在Test文件夹中放置了2.php,但是想要通过http://127.0.0.1/cmj/2.php访问2.php而不是通过http://127.0.0.1/Test/2.php来访问怎么办呢?这个时候我们就需要虚拟目录了,很明显没有cmj这个文件夹,但是又能够像访问一个正式的目录一样来访问,就需要一种映射关系。

多个虚拟目录

  首先把Apache安装到D:\Program Files\Apache2.2目录下,端口号设置为8080,安装完成后默认的网站根目录为D:\Program Files\Apache2.2\htdocs,通常我们可以在htdocs下面建立个文件夹MySite,然后在浏览器输入:http://localhost:8080/MySite 这样就可以看到我们自己的站点了。然而有时我们想把站点放到其它目录下面,这时就需要配置虚拟目录了
比如我们在D盘建立如下文件夹D:\Code\WebSite,然后通过http://localhost:8080/DemoSite来访问这个站点

打开httpd.conf文件,搜索<IfModule alias_module> 节点,然后在节点内输入以下内容:

#下面是虚拟目录声明格式
#Alias用来定义虚拟目录及虚拟目录路径,其中虚拟目录名称用于URL访问的路径别名,可以和虚拟目录名称不同
#<Directory/>节点用于定义目录的访问权限等
#
#Alias 虚拟目录名称 虚拟目录路径
#<Directory 虚拟目录路径>
#  Options Indexes FollowSymLinks
#  AllowOverride All
#  Order allow,deny
#  Allow from all
#</Directory>

#下面是具体的示例,/DemoSite是目录别名 "D:/Code/WebSite"是虚拟目录的实际路径
Alias /DemoSite "D:/Code/WebSite"

<Directory "D:/Code/WebSite">
  Options Indexes FollowSymLinks
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>

重启Apache服务后,在浏览器输入http://localhost:8080/DemoSite就可以正常访问了
这里需要注意下目录尽量使用"/",而不是使用"\",原因就是"\"代表转义符有些情况下会导致莫名奇妙的错误,下面附上完整的<IfModule alias_module>节点以供参考

<IfModule alias_module>
  #
  # Redirect: Allows you to tell clients about documents that used to
  # exist in your server's namespace, but do not anymore. The client
  # will make a new request for the document at its new location.
  # Example:
  # Redirect permanent /foo http://localhost/bar

  #
  # Alias: Maps web paths into filesystem paths and is used to
  # access content that does not live under the DocumentRoot.
  # Example:
  # Alias /webpath /full/filesystem/path
  #
  # If you include a trailing / on /webpath then the server will
  # require it to be present in the URL. You will also likely
  # need to provide a <Directory> section to allow access to
  # the filesystem path.

  #
  # ScriptAlias: This controls which directories contain server scripts.
  # ScriptAliases are essentially the same as Aliases, except that
  # documents in the target directory are treated as applications and
  # run by the server when requested rather than as documents sent to the
  # client. The same rules about trailing "/" apply to ScriptAlias
  # directives as to Alias.
  #
  ScriptAlias /cgi-bin/ "D:/Program Files/Apache2.2/cgi-bin/"

  Alias /DemoSite "D:/Code/WebSite"

  <Directory "D:/Code/WebSite">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
</IfModule>

多主机头绑定
(就是在一个端口上绑定多个域名,然后每个域名可以指向不同的目录进行访问,主机头是IIS里面的说法),打开httpd.conf文件,在文件最后添加如下内容

#多主机头配置无需放在特定的节点下面,一般直接在配置文件底部添加即可
#NameVirtualHost addr[:port] 为一个基于域名的虚拟主机指定一个IP地址(和端口)
#声明主机头必须加这条指令,否者主机头配置不会生效
#VirtualHost节点下面ServerName就是要绑定的域名,DocumentRoot表示此域名指向的目录
#本机测试的话请在hosts中进行域名绑定如 127.0.0.1 www.mysite1.com

NameVirtualHost *:8080
<VirtualHost *:8080>
  ServerName www.mysite1.com
  DocumentRoot "D:\Program Files\Apache2.2\htdocs"
</VirtualHost>

<VirtualHost *:8080>
  ServerName www.mysite2.com
  DocumentRoot "D:\Code\MySite"
</VirtualHost>

配置好后,重启apache服务,浏览器输入www.mysite1.com:8080,就会自动定向到D:\Program Files\Apache2.2\htdocs站点了

输入www.mysite2.com:8080就会自动定向到D:\Code\MySite站点,如此就可以实现在一个服务器上同时运行多个站点

(0)

相关推荐

  • Apache配置虚拟目录和多主机头的方法

    了解一下根目录和虚拟目录的关系: 安装过apache之后打开httpd.conf文件会发现DocumentRoot默认设置的应该是apache安装目录中的htdocs文件夹.然后你的网页就可以放大这个htdocs文件夹中测试,例你在里面放了一个1.PHP,可以输入http://127.0.0.1/1.php进行测试.这个DocumentRoot后面的路径就是apache的根目录.有时候我们不想将自己的网站放到这里,例如我想要放到F:/MyPHP中来运行,那么就可以修改DocumentRoot为F

  • windows2003 apache配置虚拟主机和绑定域名服务

    本篇文章的方法大概在网上都可以找到解决方法,只是不是很明确,在这为了减少网友像我这么粗心的少走些弯路,我自己写了下一个简单明了的设置过程. 先说下我的服务器的环境: windows 2003 服务器 apache_2.0.48 php4.2 (我们服务器是独立IP,服务器上也没有装IIS,也没有装DNS服务器之类的,所以只能用Apache虚拟主机了) 下面开始说设置步骤:(我这只说基于主机名的虚拟主机一个IP地址,多个网站 的配置过程,如需了解更多,请参考Apache虚拟主机文档) 1.在win

  • windows2003下apache配置虚拟主机和绑定域名服务

    本篇文章的方法大概在网上都可以找到解决方法,只是不是很明确,在这为了减少网友像我这么粗心的少走些弯路,我自己写了下一个简单明了的设置过程. 先说下我的服务器的环境: windows 2003 服务器 apache_2.0.48 php4.2 (我们服务器是独立IP,服务器上也没有装IIS,也没有装DNS服务器之类的,所以只能用Apache虚拟主机了) 下面开始说设置步骤:(我这只说基于主机名的虚拟主机一个IP地址,多个网站 的配置过程,如需了解更多,请参考Apache虚拟主机文档) 1.在win

  • 分享三种Apache配置虚拟主机的方式

    一.基于IP 1. 假设服务器有个IP地址为192.168.1.10,使用ifconfig在同一个网络接口eth0上绑定3个IP: [root@localhost root]# ifconfig eth0:1 192.168.1.11 [root@localhost root]# ifconfig eth0:2 192.168.1.12 [root@localhost root]# ifconfig eth0:3 192.168.1.13 2. 修改hosts文件,添加三个域名与之一一对应: 1

  • win10 apache配置虚拟主机后localhost无法使用的解决方法

    win10系统配置虚拟主机 1.用记事本或Sublime Text打开httpd.conf ctrl + f 搜索httpd-vhosts.conf 将 #Include conf/extra/httpd-vhosts.conf 的#号去掉保存 2.打开extra/httpd-vhosts.conf 添加如下内容: <VirtualHost *:80> ServerAdmin webmaster@youremail.com DocumentRoot "E:/your_web_root

  • Tomcat 中如何给 web 项目配置虚拟目录的方法

     为什么要给 web 项目配置虚拟目录? 初学 JavaWeb 时,会发现只要我们把 web 项目放到 Tomcat 的 webapps 目录下,再通过 http://localhost:8080/项目名称/某个页面 就可以访问该网站了.可是这样并不符合规范,最好还是把 web 项目文件和 Tomcat 的安装文件分开.那如何实现这个要求呢?当然是给 web 项目配置虚拟目录啦. 如何给 web 项目配置虚拟目录? 前面已经说了,我们要把项目文件和 Tomcat 安装文件分离开.假设我们这里把

  • Windows系统下安装Tomcat服务器和配置虚拟目录的方法

    安装Tomcat和配置环境变量 安装jdk,这个我就不用说了 安装的时候指定安装路径,我指定的是: D:\Program Files\Java\jdk1.6.0_05 3.解压下载的apache-tomcat-5.5.23.zip,   我指定的是D:\Program Files\apache-tomcat-5.5.26 安装完成后,打开"我的电脑"->"系统属性"->"环境变量"在"用户变量" 新建"C

  • C#实现创建,删除,查找,配置虚拟目录实例详解

    本文实例讲述了C#实现创建,删除,查找,配置虚拟目录的方法.分享给大家供大家参考.具体如下: #region<<虚拟目录>> /// <summary> /// 创建虚拟目录 /// </summary> /// <param >虚拟目录别名</param> /// <param >内容所在路径</param> public static bool CreateVirtualDirectory(string w

  • Maven项目部署到服务器设置访问路径以及配置虚拟目录的方法

    一.概念 Tomcat的虚拟目录即在服务器上另选择一个webapps之外的文件夹存放项目文件,通过配置Tomcat的属性,实现访问. 注:未配置虚拟目录,则只能访问webapps/ROOT范围内的文件 二.本机Tomcat配置实例 只需在Host配置项内加入 Context 配置,在 /Tomcat/conf/server.xml 文件加上如下Context配置: <Host name="localhost" appBase="webapps" unpackW

  • 修改Apache配置指定php配置文件php.ini的位置方法

    一般Apache安装php后,php配置文件默认加载位置在php/lib/文件夹下,如果该文件夹下没有php.ini文件则apache就会找不到php的配置文件,这时有两种方法, 第一种方法:就是复制一个相同版本的php的配置文件到该默认加载文件夹下,那么此时该配置文件中的配置就会被应用. 第二种方法:就是指定一个现存的php.ini位置.具体方法如下: (在httpd.conf文件最后一行添加PHPIniDir /usr/local/lib/php.ini ) 如下图: 修改后Apache配置

随机推荐