伪静态的实现方法
伪静态不是优化效率的方案,它指的是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禁止。