虚拟目录的配置

实现访问 www.baidu.com  的时候显示我们的项目

(1)浏览器的配置

修改hosts文件,域名解析的原理:

思考:

为什么访问 www.yibei.com 能够显示的是项目的目录里面的文件

(1)先去你当地的hosts,查看有没有当前域名指向的ip地址,如果有,直接访问

(2)如果没有直接去外网(DNS服务商),找,如果还没有提示错误,

Bluehost Godaddy

 

国内: 

万网

注册域名:taobao

 

1,先修改hosts文件

ip地址:服务器ip地址127.0.0.1   和网络的ip地址 192.168.2.1

127.0.0.1       localhost

127.0.0.1       www.php.com

127.0.0.1       www.sina.com

 

(2)服务器的配置

每一个网站可以作为一个模块,分而治之

修改apache的配置文件

httpd.conf

定位到

# Virtual hosts

#Include conf/extra/httpd-vhosts.conf

去掉注释

然后找到conf/extra/httpd-vhosts.conf文件

每一个网站对应一个 模块

<VirtualHost *:80>

   ServerAdmin [email protected]

   DocumentRoot "D:/myenv/apache/docs/dummy-host2.somenet.com"

   ServerName dummy-host2.somenet.com

    ErrorLog"logs/dummy-host2.somenet.com-error.log"

    CustomLog"logs/dummy-host2.somenet.com-access.log" common

</VirtualHost>

 

自己配置一个:

一个模块至少有两项:

1,我的域名是谁

2,我的网站的根目录在哪里?

 

<VirtualHost *:80>

   DocumentRoot "D:/myenv/myweb/sina"

   ServerName  www.sina.com

</VirtualHost>

 

访问之后显示Forbbiden,权限

修改权限:

    <Directory"D:/myenv/myweb/sina">

       OrderDeny,Allow

Deny from All

       Allowfrom All

   </Directory>

 

Order 访问的顺序,先Deny,,后Allow

Deny 和  Allow还可以设置

允许 127.0.0.1 这个ip地址的用户访问,其他用户不能访问

Allow from 127.0.0.1

5,配置php.ini文件,让他可以操作mysql

为什么修改php的配置文件后,要重启apache?

因为php5apache2_2.dll 这个模块是链接apache和php的桥梁

同时,php作为apache的模块存在

 

mysql_connect() 这些函数属于谁?

为什么调用这个函数后,能够获得数据库的数据?

因为mysql是作为php的一个扩展存在

默认情况下,没有php.ini配置文件,但是提供

php.ini-development      开发模式

php.ini-production        生产环境

修改php.ini之后,因为apache会读取php的配置文件,需要告诉apache php配置文件位置

PHPIniDir D:/myenv/php

 

接下来,修改php.ini,让他开启mysql的扩展,这样就能操作mysql数据库了

extension=php_mysql.dll

最后再告诉php ,它的扩展目录在哪里?

 

 

 

到目前为止,三大巨头安装成功

 

6,如何通过apache的重写机制实现 伪静态?

回顾一些虚拟主机

(1)在httpd.conf   开启虚拟主机

(2)虚拟主机的具体配置,每一个网站对应一个模块

我们对网站们分而治之,对每个网站做不同的访问权限设置

开启虚拟主机之后,服务器读取的是虚拟主机对应的目录

 

设置网站的欢迎页面(首页面):

<IfModule dir_module>

   DirectoryIndex index.html index.php

</IfModule>

按照先后顺序显示

 

设置网站的访问权限:

防盗链:

防止别人盗取我们的资源

 

配置继承:

先看 你当前的虚拟主机的配置

如果虚拟主机没有配置这一项,他会去

<Directory />

   Options FollowSymLinks

   AllowOverride None

   Order deny,allow

   Deny from all

</Directory>

 

(2)伪静态

apache的rewrite.so 模块实现的

实现:

访问: http://www.sina.com/news-id3.html

其实访问的是:

http://www.sina.com/news.php?id=3

正则实现的:

(1)修改虚拟主机的配置

  1, 需要开启重启模块  httpd.conf

LoadModule rewrite_modulemodules/mod_rewrite.so

    <Directory"D:/myenv/myweb/sina">

       OrderDeny,Allow

       Denyfrom All

       Allowfrom All

       #开启重写引擎

       RewriteEngineOn

       #告诉服务器允许url地址的重写

       Allowoverrideall

       #告诉服务器重写的规则

       #将正则表达式匹配的结果 如果在后面想使用匹配的结果,$1 代表第一个子表示,$2,代表第二个子表达式

       RewriteRule([a-z]+)-id(\d+).html $1.php?id=$2&type=$1

   </Directory>

(2)增加 .htaccess 文件

 topdvdreview.com

 www.topdvdreview.com

查找


------------------------------------------------------------------------------------------------------

正则表达式:

补充 PHP中如何使用正则表达式

test.php 代码:

<?php

$str="ajfalkkjflakjf888-999-387lkjaflsajf777-333-123";

 

//取出四个连续的数字.

$reg="/(\d)\d\d(\d)/";

//取出888-999-387

$reg='/(\d)\1{2}-(\d)\2{2}-\d{3}/';

 

//$reg表示正则规范!, $str表示在哪个字符去找,$result匹配的结果放入该数组

//说明:该函数找到一个就停止匹配

//匹配的结果放入到$result数组: $result[0] 放入的是找到的字符串  $result[1] 放入第一个子表达式的内容 $result[2]...$result[n]

 

//preg_match($reg,$str,$result);

 

//$reg表示正则规范!, $str表示在哪个字符去找,$result匹配的结果放入该数组

//说明:该函数匹配所有的结果

//匹配的结果放入到$result二维数组: $result[0] 放入的是找到的所有字符串 

//$result[1] 放入各个结果的比如 $result[1][0] 放入的是第一个匹配结果的第一个子表达式内容

//其它依次类推

//preg_match_all($reg,$str,$result);

 

echo "<pre>";

print_r($result);

echo "</pre>";

?>


你可能感兴趣的:(虚拟目录的配置)