apache服务器配置伪静态

来源:互联网 发布:u盘病毒专杀工具 知乎 编辑:程序博客网 时间:2024/06/10 16:30

伪静态的实现:

(1)apacherewrite机制

2PHP的正则表达式

练习一下apache + php + mysql 的搭建

面试的时候:

机试:

作为一个合格的php工程师

www.baidu.com  

开始搭建环境:

安装的版本:

apache 2.2.22 

mysql 5.5.24

php 5.3.13

(1)卸载之前的软件 

 一定要停止服务

(2)卸载

删除一下环境变量:

(3)安装

测试是否安装成功:

(2)安装php

因为php是作为apache的一个模块存在的

所以通过apache的配置文件将php加载过来

加载php模块

(2)告诉apache哪些文件需要使用php这门语言来解析

(3)安装mysql

编码

密码

安装过程中,出现的问题:

1

把之前的数据库导入到我们的新的环境下

将之前的mysql中的data目录中的数据库文件夹,(需要哪个数据库复制哪个,不要都复制)

(2)mysql已经存在

如何删除之前的服务

sc delete 服务名

(3)apache服务器)(web服务器)------apache服务器

mysql (应用服务器)---- mysql的服务器

卸载软件之后,有的系统会自动的将服务给卸载掉,但是有的系统不会自动卸载服务

如果提示mysql服务已经存在了

  (1win7系统,系统管理员的身份打开 cmdsc delete 服务名称

  (2)如果这时还不能将服务卸载,通过修改系统的注册表,在注册表中删除这个服务

     运行------regedit  ----HKEY_LOCAL_MACHINE -----SYSTEM-----CurrentControlSet-----Services

虚拟目录的配置:

实现访问 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 webmaster@dummy-host2.somenet.com

    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">

Order Deny,Allow

Deny from All

Allow from 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 这个模块是链接apachephp的桥梁

同时,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)伪静态

apacherewrite.so 模块实现的

实现:

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

其实访问的是:

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

正则实现的:

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

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

LoadModule rewrite_module modules/mod_rewrite.so

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

Order Deny,Allow

Deny from All

Allow from All

#开启重写引擎

RewriteEngine On

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

Allowoverride all

#告诉服务器重写的规则

#将正则表达式匹配的结果 如果在后面想使用匹配的结果,$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-387 lkjaflsajf777-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>";

?>

思考题:

http://localhost/content.php/news-sport-id1.html

content.php中取出

news sport 1取出

原创粉丝点击