实现访问 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>";
?>