您的位置:首页 > 编程语言 > PHP开发

php伪静态技术

2014-11-12 01:06 190 查看
什么是伪静态?

在开发过程中,有这样一个超链接:http://www.test.com/test.php?a=xxx&b=xxx,由于这样的url有很多弊端,例如容易注入,不利于seo,而且程序内部容易被模拟等,所以我们希望url变成 http://www.test.com/axxx-bxxx.html
这时候我们就需要用伪静态技术来实现,伪静态的实现机制rewrite

1:首先我们需要启动rewrite模块,默认是未启用的

打开httpd.conf文件,

#LoadModule rewrite_modulemodules/mod_rewrite.so 将#号去掉

之后重启apache 运行php_info(),查看是否启动成功

2:配置虚拟机

再次打开httpd.conf

#Include conf/extra/httpd-vhosts.conf 将#号去掉

打开conf/ext/httpd-vhost.conf

在后面加上

<VirtualHost *:80>

DocumentRoot "D:/www/test" #指定虚拟机指向的目录(假设apache解析的默认目录是www)

#Directory配置节点,用于指定该目录下的文件或是图片.的访问权限

<Directory "D:/www/test">

</Directory>

</VirtualHost>

3:在hosts文件中,配置ip和主机的对应关系

127.0.0.1 www.test.com

此时访问http://www.test.com/test.php ,即可访问到test.php

提示:

在apache服务器中,如果某个文件夹,没有指定访问权限,则以上级目录的权限为准,如果他自己指定了访问权限,则以自己的为准.

4:在<Directory>节点中,可以配置很多默认页面,例如404 ,403错误,进入后的欢迎界面,是否显示目录,还有我们的rewrite引擎:

<Directory"D:/www/test">

#这里可以指定是否让人访问

Allowfrom all #对应的deny from all 不允许所有人访问

#是否列出文件目录结构

#如果希望列出 indexes不希望 none

Options indexes #Option none

#配置欢迎界面,默认进入该虚拟机目录直接显示welcome.html中的内容

DirectoryIndex welcome.html

#配置404错误页面,引导用户引入新页面

errorDocument404 /404.html #反斜杠代表当前目录

#配置我们的rewrite规则

#首先开启重写引擎

RewriteEngine On

#配置我们的重写规则,这里简单举例,例如:在我访问test.html时,实际是访问test.php

RewriteRule test.html test.php

#配置成功,重启apache进行测试

#当然实际开发中,我们不可能这样写,我们需要借助pattern(正则表达式)进行url重写

#例如 http://www.test.com/shop.php?type=food&id=100 我们要重写成 http://www.test.com/shop-food-id-100.html
RewriteRule shop-([a-zA-Z]+)-id-(\d+)\.html$ shop.php?type=$1&id=$2 # $符号代表php中的捕获和反向代理,在pattern \符号代表捕获和反向代理,这里不多阐述

</Directory>

到这里,我们的伪静态就已经成功实现,但是这种实现方法,因为它过多的修改了apache下的文件,需要经常重启apache而且容易出问题,我们使用第二种方式

在指定目录中创建.htaccess文件.

这是我们只需要在节点<Directory>中写上:allowoverride from all #如果你配置了allowoverride all 这表示到对应的目录的.htaccess去匹配规则

然后再节点指定目录创建.htaccess文件,里面内容格式如下:

//文件开头

allow from all

DirectoryIndex welcome.html

errorDocument 404 /404.html

#这里就好比if语句

<IfModule rewrite_module>

#如果rewrite模块启用

#则配置我们的rewrite规则

#开启rewrite模式

RewriteEngine On

RewriteRule xxx xxx

</IfModule>

//文件结尾

当我们进行修改或者增加重写规则时,直接修改.htaccess文件,apache会自动解析这些文件,相比第一种方法,该方法更加简单安全,但是apache解析效率会降低

请注意: 项目中的 .htaccess文件的配置也是继承管理

伪静态的实际运用有很多,防盗链、url简写,利于seo等 ,(这些以后单独记录)

总结:

url重写 rewrite伪静态的好处:1 :可以方便的实现对搜索引擎的优化,并且比生成静态页面更加方便。2:占用空间较小,不像真静态那样生成过多的静态页面 .3:某些程度上降低恶意注入的可能性。4:利于网站的seo。5:等等。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: