投稿 评论 顶部

伪静态的实现方法

佚名 网络安全

伪静态不是优化效率的方案,它指的是URL优化的一种方式。取决于是否存在查询参数(queryString)

动态的URL:script.php?param=value&key=value

静态的URL(pathinfo):script.php/param/value/key/value.html

静态化url的目的,是为了SEO(搜索引擎优化),还能为了简化URL,美化URL。

典型的URL优化,伪静态的方式如下:

(1)利用web服务器提供的重写URL功能(例如Apache mod_rewrite)

(2)利用PHP自身对URL进行分析处理。(pathinfo,就是PHP处理的)(推荐)

一、URL路由-PHP自身处理URL优化

以TP框架为例:URL是TP(几乎所有的主流框架)提供的,一种自定义分析URL,并解析到指定指定的方法。

例如:有个URL:http://test.kang.com/goods_tp/index.php?m=Home&c=Shop&a=info&goods_id=5

使用Pathinfo: ?http://test.kang.com/goods_tp/index.php/Home/Shop/info/goods_id/5

自定义:http://test.kang.com/good_to/index.php/goods/5

如果需要实现自定义的URL,来请求动作,则需要 URL路由功能,即在某个模块的配置文件中,配置如下的路由信息:


PATHINFO-PHP自身处理URL路由,和PATHINFO的实现:获取用户请求的特定字符串,进行分析。


PHP提供了常见的URL格式字符串解析功能:parse_url();?



二、隐藏入口文件脚本----使用 web服务器(Apache httpd)完成

Apache的URL重写(mod_rewrite)功能可以完成将一个URL,映射到另一个URL上。

步骤:打开apachel的配置文件httpd.conf。

开启Apache的rewrite模块

#LoadModule rewrite_module modules/mod_rewrite.so ?将#去掉


然后apache服务重启:Apache httpd restart


[可选] 开启项目目录的.htaccess权限



然后使用.htaccess配置Apache重写规则,红色框框内的。

RewriteCond ?是重写条件,Cond即condition


解释如下:如果请求的资源既不是一个真实存在的目录,也不是真实存在的文件,则完成下面的重写规则。

其他的相关指令:


重写不仅仅使用在URL隐藏index.php功能:例如:防止倒链

其它网站想在它的网站里去爬取你的网站的资源,你不想让他们获取,那么就可以利用这个技术。


解读: 条件: !test.kang.com ?意思是除了这个网站,就执行下面的重写方案。

即如果其它网站包含了以test.kang.com/........css,jpeg,png.....等结尾的链,就禁止访问。 -[F] ?forbidden禁止。