php伪静态技术

什么是伪静态?

在开发过程中,有这样一个超链接: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

在后面加上

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

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

   

   

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

127.0.0.1 www.test.com

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

提示:

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


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

 

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

       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 \符号代表捕获和反向代理,这里不多阐述

 


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

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


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

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

//文件开头
allow from all
DirectoryIndex welcome.html
errorDocument 404 /404.html

#这里就好比if语句
 
#如果rewrite模块启用
#则配置我们的rewrite规则
 #开启rewrite模式
RewriteEngine On

RewriteRule xxx xxx

//文件结尾

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

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

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

总结:

url重写 rewrite伪静态的好处:1 :可以方便的实现对搜索引擎的优化,并且比生成静态页面更加方便。2:占用空间较小,不像真静态那样生成过多的静态页面 .3:某些程度上降低恶意注入的可能性。4:利于网站的seo。5:等等。。。。



你可能感兴趣的:(php,rewrite,php,伪静态,URL)