Apache中Virtual Host虚拟主机配置及rewrite参数说明

Virtual Host配置过程

这里例子中我们的路径为这样
DocumentRoot: /home/jb51 /sites/demo.jb51.net
ServerName:demo.jb51.net

1.进入apache虚拟主机设置目录

cd /etc/apache2/sites-available

2.创建文件demo.jb51.net

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DirectoryIndex index.html index.php
    DocumentRoot /home/jb51 /sites/demo.jb51.net
    ServerName demo.jb51.net
    ServerAlias demo.jb51.net
    <Directory "/home/jb51 /sites/demo.jb51.net">
        allow from all Options + Indexes
    </Directory>
</VirtualHost>

3.激活虚拟主机配置

sudo a2ensite demo.jb51.net

4.进入 /etc/apache2/sites-enabled/目录,可以查看所有激活的虚拟主机。可以用 sudo a2dissite demo.jb51.net 注销

cd /etc/apache2/sites-enabled
ls -lt

显示

代码如下:

lrwxrwxrwx 1 root root 36 2013-04-05 17:29 demo.jb51.net -> ../sites-available/demo.jb51.net

5.重启apache服务

sudo /etc/init.d/apache2 restart

6.ubuntu 设置host

vim /etc/hosts 
127.0.0.1 demo.jb51.net

7.<Directory>设置开启.htaccess与显示目录结构列表

<Directory "/home/jb51 /demo.jb51.net">
AllowOverride none
AllowOverride all
Options -Indexes FollowSymLinks
</Directory>

AllowOverride none 表示关闭.htaccess,如要开启可设置为AllowOverride all
Options -Indexes 表示关闭目录结构显示,如要开启可设置为 Options Indexes
Options FollowSymLinks 表示支持symbol link(软连接),如要关闭可设置为Options -FollowSymLinks

rewrite模块重要参数说明

开启rewrite:

sudo a2enmod rewrite

停用rewrite:

sudo a2dismod rewrite

服务器环境变量:Apache提供给rewirte模块的环境变量大概分成5个类型.

第一部分: HTTP headers 部分参数

1.参数名称: HTTP_USER_AGENT
样例参考值: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8
说明: 相当于PHP中的服务器参数: $_SERVER["HTTP_USER_AGENT"]

2.参数名称: HTTP_REFERER
样例参考值: http://www.test.cn/test.php
说明: 相当于PHP中的服务器参数: _SERVER["HTTP_REFERER"]

3.参数名称: HTTP_COOKIE
样例参考值: ZDEDebuggerPresent=php,phtml,php3
说明: 相当于PHP中的服务器参数: $_SERVER["HTTP_COOKIE"]

4.参数名称: HTTP_FORWARDED
样例参考值: 如果使用代理服务器的话会是代理服务器的IP地址, 本地不容易搭环境测试出值来.
说明: 相当于PHP中的服务器参数: $_SERVER["HTTP_FORWARDED"]

5.参数名称: HTTP_HOST
样例参考值: www.test.com
说明: 相当于PHP中的服务器参数: $_SERVER["HTTP_HOST"]

6.参数名称: HTTP_PROXY_CONNECTION
样例参考值: 网络连接代理方面的信息. 和HTTP_FORWARDED参数一样. 本地不容易搭环境测试出值来.
说明: PHP中貌似未提供这样的服务器信息值. 如果又的话可能等值于: $_SERVER["HTTP_PROXY_CONNECTION"]

7.参数名称: HTTP_ACCEPT
样例参考值: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
说明: 相当于PHP中的服务器参数: $_SERVER["HTTP_ACCEPT"]

第二部分: server internals 部分参数

1.参数名称: DOCUMENT_ROOT
样例参考值: C:/webRoot/t
说明: 相当于PHP中的服务器参数: $_SERVER["DOCUMENT_ROOT"]

2.参数名称: SERVER_ADMIN
样例参考值: youemailaddress@gmail.com
说明: 相当于PHP中的服务器参数: $_SERVER["SERVER_ADMIN"]

3.参数名称: SERVER_NAME
样例参考值: www.test.com
说明: 相当于PHP中的服务器参数: $_SERVER["SERVER_NAME"]

4.参数名称: SERVER_ADDR
样例参考值: 127.0.0.1
说明: 相当于PHP中的服务器参数: $_SERVER["SERVER_ADDR"]

5.参数名称: SERVER_PORT
样例参考值: 80
说明: 相当于PHP中的服务器参数: $_SERVER["SERVER_PORT"]

6.参数名称: SERVER_PROTOCOL
样例参考值: HTTP/1.1
说明: 相当于PHP中的服务器参数: $_SERVER["SERVER_PROTOCOL"]

7.参数名称: SERVER_SOFTWARE
样例参考值: Apache/2.2.11 (Win32) PHP/5.2.9-1
说明: 相当于PHP中的服务器参数: $_SERVER["SERVER_SOFTWARE"]

第三部分: connection & request 部分参数

1.参数名称: REMOTE_ADDR
样例参考值: 127.0.0.1 正在浏览当前页面用户的 IP 地址。
说明: 相当于PHP中的服务器参数: $_SERVER["REMOTE_ADDR"]

2.参数名称: REMOTE_HOST
样例参考值: 127.0.0.1 正在浏览当前页面用户的主机名。反向域名解析基于该用户的 REMOTE_ADDR
说明: 相当于PHP中的服务器参数: $_SERVER["REMOTE_HOST"]

3.参数名称: REMOTE_PORT
样例参考值: 2574 (变化的值)用户连接到服务器时所使用的端口
说明: 相当于PHP中的服务器参数: $_SERVER["REMOTE_PORT"]

4.参数名称: REMOTE_USER
样例参考值: 空
说明: PHP 好像未提供相关的$_SERVER值.

5.参数名称: REMOTE_IDENT
样例参考值: 空
说明: PHP 好像未提供相关的$_SERVER值.

6.参数名称: REQUEST_METHOD
样例参考值: GET
说明: 相当于PHP中的服务器参数: $_SERVER["REQUEST_METHOD"]

7.参数名称: SCRIPT_FILENAME
样例参考值: C:/webRoot/t/share77.html
说明: 相当于PHP中的服务器参数: $_SERVER["SCRIPT_FILENAME"]

8.参数名称: PATH_INFO
样例参考值: 空
说明: 相当于PHP中的服务器参数: $_REQUEST["PATH_INFO"]

9.参数名称: QUERY_STRING
样例参考值: a=b&c=d&e=f
说明: 相当于PHP中的服务器参数: $_SERVER["QUERY_STRING"]

10.参数名称: AUTH_TYPE
样例参考值: 空 当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个是认证的类型
说明: 相当于PHP中的服务器参数: $_SERVER["AUTH_TYPE"]

第四部分: date and time 部分参数

1.参数名称: TIME_YEAR
样例参考值: 2009
说明: 服务器获取当前的年份值

2.参数名称: TIME_MON
样例参考值: 04
说明: 服务器获取当前的月份值

3.参数名称: TIME_DAY
样例参考值: 22
说明: 服务器获取当前的日值

4.参数名称: TIME_HOUR
样例参考值: 16
说明: 服务器获取当前时间的小时

5.参数名称: TIME_MIN
样例参考值: 26
说明: 服务器获取当前时间的分钟

6.参数名称: TIME_SEC
样例参考值: 34
说明: 服务器获取当前时间的秒

7.参数名称: TIME_WDAY
样例参考值: 3
说明: 服务器获取当天是星期几, 从星期日-星期六, 数字从 0-6

8.参数名称: TIME
样例参考值: 20090422162634
说明: 服务器获取当前的时间, 格式为: 年月日时分秒

第五部分: specials 部分参数

1.参数名称: API_VERSION
样例参考值: 20051115:21
说明: apache 的 API 版本信息.

2.参数名称: THE_REQUEST
样例参考值: GET /share77.html HTTP/1.1
说明: 浏览器发给服务器的请求值. 不包括其他的头信息.

3.参数名称: REQUEST_URI
样例参考值: /share77.html
说明: 浏览器请求的资源信息.

4.参数名称: REQUEST_FILENAME
样例参考值: C:/webRoot/t/share77.html
说明: 被请求的资源的在磁盘的物理地址.

5.参数名称: IS_SUBREQ
样例参考值: false
说明: 如果是 sub-request 则显示为 true, 否则为 false.

6.参数名称: HTTPS
样例参考值: off
说明: 如果连接使用 SSL/TLS 模式, 则值为on , 否则值为off, 这个参数比较安全, 即使未载入 mod_ssl 模块时.

(0)

相关推荐

  • Java Socket编程实例(三)- TCP服务端线程池

    一.服务端回传服务类: import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.util.logging.Level; import java.util.logging.Logger; public class EchoProtocol implements Runnable { private static f

  • 详解C++编程中向函数传递引用参数的用法

    引用类型的函数参数 向函数传递引用而非大型对象的效率通常更高. 这使编译器能够在保持已用于访问对象的语法的同时传递对象的地址. 请考虑以下使用了 Date 结构的示例: // reference_type_function_arguments.cpp struct Date { short DayOfWeek; short Month; short Day; short Year; }; // Create a Julian date of the form DDDYYYY // from a

  • 解析C++函数的默认参数和占位参数及较之C语言的拓展

    可以将占位参数与默认参数结合起来使用 意义: 为以后程序的扩展留下线索 兼容C语言程序中可能出现的不规范写法 //C++可以声明占位符参数,占位符参数一般用于程序扩展和对C代码的兼容 int func(int a, int b, int = 0) { return a + b; } void main() { //如果默认参数和占位参数在一起,都能调用起来 func(1, 2); func(1, 2, 3); system("pause"); } 默认参数对C的函数拓展 1.C++中可

  • 详解Java多线程编程中CountDownLatch阻塞线程的方法

    直译过来就是倒计数(CountDown)门闩(Latch).倒计数不用说,门闩的意思顾名思义就是阻止前进.在这里就是指 CountDownLatch.await() 方法在倒计数为0之前会阻塞当前线程. CountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. CountDownLatch 的作用和 Thread.join() 方法类似,可用于一组线程和另外一组线程的协作.例如,主线程在做一项工作之前需要一系列的准备工作,只有这些准备工

  • Android实现在子线程中更新Activity中UI的方法

    本文实例讲述了Android实现在子线程中更新Activity中UI的方法.分享给大家供大家参考,具体如下: 在Android平台下,进行多线程编程时,经常需要在主线程之外的一个单独的线程中进行某些处理,然后更新用户界面显示.但是,在主线线程之外的线程中直接更新页面显示的问题是:系统会报这个异常: ERROR/AndroidRuntime(1222): android.view.ViewRoot$CalledFromWrongThreadException: Only the original

  • Android App中使用SurfaceView制作多线程动画的实例讲解

    1. SurfaceView的定义 通常情况程序的View和用户响应都是在同一个线程中处理的,这也是为什么处理长时间事件(例如访问网络)需要放到另外的线程中去(防止阻塞当前UI线程的操作和绘制).但是在其他线程中却不能修改UI元素,例如用后台线程更新自定义View(调用View的在自定义View中的onDraw函数)是不允许的. 如果需要在另外的线程绘制界面.需要迅速的更新界面或则渲染UI界面需要较长的时间,这种情况就要使用SurfaceView了.SurfaceView中包含一个Surface

  • C#创建线程带参数的方法

    1.无参数线程的创建 Thread thread = new Thread(new ThreadStart(getpic)); thread.Start(); private void showmessage() { Console.WriteLine("hello world"); } 2.带一个参数的线程 使用ParameterizedThreadStart,调用 System.Threading.Thread.Start(System.Object) 重载方法时将包含数据的对象传

  • 举例剖析C++中引用的本质及引用作函数参数的使用

    引用的意义与本质 1)引用作为其它变量的别名而存在,因此在一些场合可以代替指针 2)引用相对于指针来说具有更好的可读性和实用性 引用本质思考: 思考.C++编译器背后做了什么工作? #include <iostream> using namespace std; int main() { int a = 10; // 单独定义的引用时,必须初始化:说明很像一个常量 int &b = a; // b是a的别名 b = 11; cout << "b--->&qu

  • 实例讲解在C++的函数中变量参数及默认参数的使用

    包含变量参数列表的函数 如果函数声明中最后一个成员是省略号 (...),则函数声明可采用数量可变的参数.在这些情况下,C++ 只为显式声明的参数提供类型检查.即使参数的数量和类型是可变的,在需要使函数泛化时也可使用变量参数列表.函数的系列是一个使用变量参数列表的函数的示例.printfargument-declaration-list 包含变量参数的函数 若要访问声明后的参数,请使用包含在标准包含文件 STDARG.H 中的宏(如下所述). 采用数量可变的参数的函数声明至少需要一个占位符参数(即

  • Apache中Virtual Host虚拟主机配置及rewrite参数说明

    Virtual Host配置过程 这里例子中我们的路径为这样 DocumentRoot: /home/jb51 /sites/demo.jb51.net ServerName:demo.jb51.net 1.进入apache虚拟主机设置目录 cd /etc/apache2/sites-available 2.创建文件demo.jb51.net <VirtualHost *:80> ServerAdmin webmaster@localhost DirectoryIndex index.html

  • apache的多站点虚拟主机配置方法

    例:主机IP是:192.168.1.1 你的主机上有三个域名: www.a.com    网页文件放在E:\web\www\1 www.b.com    网页文件放在E:\web\www\2 www.c.com    网页文件放在E:\web\www\3 在apache的httpd.conf中加入 #设置不同的域名到不同的目录 NameVirtualHost 192.168.1.1 <VirtualHost 192.168.1.1>   DocumentRoot "E:\web\ww

  • apache虚拟主机配置: 二级目录访问跳转到其他根文件夹

    访问 http://www.abc.com/course/ ,实际访问的是:d:/www/moodle/index.PHP <VirtualHost *:80> ServerAdmin webmaster@abc.com DocumentRoot "d:/www/abc" ServerName www.abc.com ##ServerAlias Alias /course "d:/www/moodle" <Directory "d:/ww

  • apache虚拟主机配置的三种方式(小结)

    目录 一.基于IP 二.基于主机名 三.基于端口 记事本打开httpd.conf文件 ,该文件在apache的目录下,如: D:\AppServ\Apache2.2\conf,修改如下两处: LoadModule vhost_alias_module modules/mod_vhost_alias.so //去掉前面的#,意思是启用apache的虚拟主机功能,第203行 Include conf/extra/httpd-vhosts.conf //去掉#的意思是从httpd-vhosts.con

  • Apache源码安装和虚拟主机配置的教程详解

    源码安装Apache 1.上传Apache源码安装所需软件包 2.安装: 安装顺序 apr->apr-util->pcre->httpd 安装编译环境 yum -y install gcc gcc-c++ apr 编译安装 tar xzf apr-1.4.6.tar.gz cd apr-1.4.6 ./configure --prefix=/usr/local/apr make && make install apr-util 编译安装 tar xzf apr-util-

  • Nginx 虚拟主机配置的三种方式(基于域名)

    Nginx配置虚拟主机支持3种方式:基于IP的虚拟主机配置,基于端口的虚拟主机配置,基于域名的虚拟主机配置. 详解Nginx 虚拟主机配置的三种方式(基于IP) https://www.jb51.net/article/149774.htm 详解Nginx 虚拟主机配置的三种方式(基于端口) https://www.jb51.net/article/14978.htm 3.Nginx基于域名的虚拟主机配置 使用基于域名的虚拟主机配置是比较流行的方式,可以在同一个IP上配置多个域名并且都通过80端

  • 详解Nginx 虚拟主机配置的三种方式(基于IP)

    Nginx配置虚拟主机支持3种方式:基于IP的虚拟主机配置,基于端口的虚拟主机配置,基于域名的虚拟主机配置. 详解Nginx 虚拟主机配置的三种方式(基于端口) https://www.jb51.net/article/14977.htm 详解Nginx 虚拟主机配置的三种方式(基于域名) https://www.jb51.net/article/14978.htm 1.基于IP的虚拟主机配置 如果同一台服务器有多个IP,可以使用基于IP的虚机主机配置,将不同的服务绑定在不同的IP上. 1.1

  • 详解Nginx 虚拟主机配置的三种方式(基于端口)

    Nginx配置虚拟主机支持3种方式:基于IP的虚拟主机配置,基于端口的虚拟主机配置,基于域名的虚拟主机配置. 详解Nginx 虚拟主机配置的三种方式(基于IP) https://www.jb51.net/article/14974.htm 详解Nginx 虚拟主机配置的三种方式(基于域名) https://www.jb51.net/article/14978.htm 2.Nginx基于端口的虚拟主机配置 如一台服务器只有一个IP或需要通过不同的端口访问不同的虚拟主机,可以使用基于端口的虚拟主机配

  • 安全虚拟主机配置技巧

    注入漏洞.上传漏洞.弱口令漏洞等问题随处可见.跨站攻击,远程控制等等是再老套不过了的话题.有些虚拟主机管理员不知是为了方便还是不熟悉配置,干脆就将所有的网站都放在同一个目录中,然后将上级目录设置为站点根目录.有些呢,则将所有的站点的目录都设置为可执行.可写入.可修改.有些则为了方便,在服务器上挂起了QQ,也装上了BT.更有甚者,竟然把Internet来宾帐号加入到Administrators组中!汗--!普通的用户将自己的密码设置为生日之类的6位纯数字,这种情况还可以原谅,毕竟他们大部分都不是专

  • apache基于端口创建虚拟主机的示例

    apache:基于端口创建虚拟主机 以创建虚拟主机(a,b,c)为例子 1)2.1.2禁用默认的主机模式 [root@localhost httpd]# vim /etc/httpd/conf/httpd.conf 在主配置文件里面注释下面这行内容 #DocumentRoot "/var/www/html" 2)在主配置文件添加监听端口 找到Listen行,在原有行Listen 80行的基础上, 在添加一行 Listen 8080 Listen 81 3)添加端口配置虚拟 [root@

随机推荐