什么是伪静态?
在开发过程中,有这样一个超链接: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:在
#这里可以指定是否让人访问
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文件.
这是我们只需要在节点
然后再节点指定目录创建.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:等等。。。。