开启PHP的伪静态模式


Posted in PHP onDecember 31, 2015

一直在做php的开发工作.在开发的过程中老早就听说了“伪静态”这一说。但是一直没有对其进行了解。今天通过本篇文章仔细学习下。

首先,什么是伪静态:

伪静态又名URL重写,是动态的网址看起来像静态的网址。换句话说就是,动态网页通过重写 URL 方法实现去掉动态网页的参数,但在实际的网页目录中并没有必要实现存在重写的页面。

1.检测Apache是否支持mod_rewrite

通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到“Loaded Modules”,其中列出了所有
apache2handler已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设置。

如果没有开启“mod_rewrite”,则打开目录 您的apache安装目录“/apache/conf/” 下的 httpd.conf 文
件,通过Ctrl+F查找到“LoadModule rewrite_module”,将前面的”#”号删除即可。

如果没有查找到,则到“LoadModule” 区域,在最后一行加入“LoadModule rewrite_module modules/mod_rewrite.so”(必选独占一行),然后重启apache服务器即可。

2.在httpd.conf中配置虚拟主机

# Virtual hosts 启用虚拟主机
Include conf/extra/httpd-vhosts.conf

3.httpd_vhosts.conf文件中,配置相应的选项.详细讲解

<VirtualHost *:80>
  DocumentRoot "C:/myenv/apache/htdocs/static3"
  ServerName www.hsp.com
  <Directory "C:/myenv/apache/htdocs/static3">
#Deny from All 403错误提示
Allow from All
#如果文件目录在apache目录外面,注释掉optinos 则,不能列表.
options +Indexes
#下面这个表示可以去读取 .htaccess文件,也可以直接在虚拟主机中配置.
Allowoverride All
RewriteEngine On
RewriteRule news-id(\d+).html$ error.php?id=$1
#这里可以设置多个重写的规则
#RewriteRule news-id.html$ error.php
  </Directory>
 </VirtualHost>

4.在相应的目录下编写.htaccess 重写规则

   例子:

<IfModule rewrite_module>
RewriteEngine On
RewriteRule news-id(\d+).html$ show.php?id=$1
#这里可以设置多个重写的规则
#RewriteRule news-id.html$ error.php
</IfModule>

如果在linux下可以直接创建,

如果是在windows平台下,用记事本创建一个文件,比如abc.txt,然后另存为 .htaccess文件即可

5.重写规则,也可以直接在配置虚拟主机的<Directory>段配置.

动态、静态、伪静态之间的利与弊(新)

动态网址

首先,动态网址目前对于Google来说,“不能被抓取”的说法是错误的,Google能够很好的处理动态网址并顺利抓取;其次“参数不能超过3个”的说法也不正确,Google能够抓取参数超过3个的动态网址,不过,为了避免URL太长应尽量减少参数。

其次,动态网址有其一定的优势,以上面所说的 news.php?lang=cn&class=1&id=2 为例,网址中的参数准确的告诉Google,此URL内容语言为cn、隶属于分类1、内容ID为2,更便于Google对内容的识别处理。

最后,动态网址应尽量精简,特别是会话标识(sid)和查询(query)参数,容易造成大量相同页面。

静态网址

首先,静态网址具有的绝对优势是其明晰,/product/nokia/n95.html和/about.html可以很容易被理解,从而在搜索结果中可能点击量相对较高。

其次,静态网址未必就是最好的网址形式,上述动态网址中说到,动态网址能够告诉Google一些可以识别的参数,而静态网址如果文档布置不够恰当(如:过于扁平化,将HTML文档全放在根目录下)及其他因素,反而不如静态网址为Google提供的参考信息丰富。

最后,?匪际窬醯?oogle此文中是否有其隐藏含义?“更新此种类型网址的页面会比较耗费时间,尤其是当信息量增长很快时,因为每一个单独的页面都必须更改编译代码。”虽然所说的是网站,但在Google系统中是否同样存在这样的问题呢?

伪静态网址

首先,伪静态网址不能让动态网址“静态化”,伪静态仅仅是对动态网址的一个重写,Google不会认为伪静态就是HTML文档。

其次,伪静态可取,但应把重心放在去除冗余参数、规范URL、尽可能的避免重复页上。

最后,伪静态有很大潜大危险,最好在对网站系统、网站结构、内容分布、参数意义熟悉的情况下使用。

在写伪静态规则时,应保留有价值的参数,不要将有价值的参数全部精简掉,如前面例子中的 news.php?lang=cn&class=1&id=2 最好重写为 news-cn-class1-id2.html,而不是过份精简重写为 news-2.html。

再就是伪静态中一定不能包含会话标识(sid)和查询(query)参数,/product.asp?sid=98971298178906&id=1234 这样的动态网址,其中的sid本来Google能够识别并屏蔽,但如果重写为 /product/98971298178906/1234,Google不但无法识别,还在整站中造成无限重复页面(每个会话都会产生一个新的会话ID)。

PHP 相关文章推荐
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
Nov 02 PHP
PHP以及MYSQL日期比较方法
Nov 29 PHP
PHP禁止个别IP访问网站
Oct 30 PHP
Discuz7.2版的faq.php SQL注入漏洞分析
Aug 06 PHP
php中的字符编码转换函数用法示例
Oct 20 PHP
php自动获取关键字的方法
Jan 06 PHP
简单谈谈PHP vs Node.js
Jul 17 PHP
PHP使用redis实现统计缓存mysql压力的方法
Nov 14 PHP
laravel中的错误与日志用法详解
Jul 26 PHP
PHP和MYSQL实现分页导航思路详解
Apr 11 PHP
php+redis实现商城秒杀功能
Nov 19 PHP
PHP变量的作用范围实例讲解
Dec 22 PHP
thinkphp多层MVC用法分析
Dec 30 #PHP
thinkphp命名空间用法实例详解
Dec 30 #PHP
详解PHP中的null合并运算符
Dec 30 #PHP
thinkPHP导出csv文件及用表格输出excel的方法
Dec 30 #PHP
PHP使用strtotime获取上个月、下个月、本月的日期
Dec 30 #PHP
分享PHP守护进程类
Dec 30 #PHP
如何写php守护进程(Daemon)
Dec 30 #PHP
You might like
生成卡号php代码
2008/04/09 PHP
PHP编写登录验证码功能 附调用方法
2016/05/19 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
日期函数扩展类Ver0.1.1
2006/09/07 Javascript
基于jquery的tab切换 js原理
2010/04/01 Javascript
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
取得元素的左和上偏移量的方法
2014/09/17 Javascript
原生Ajax 和jQuery Ajax的区别示例分析
2014/12/17 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
2015/03/03 Javascript
jquery实现的省市区三级联动
2015/04/02 Javascript
实例详解jQuery表单验证插件validate
2016/01/18 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
2020/04/12 Javascript
微信小程序自定义prompt组件步骤详解
2018/06/12 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
vue中实现弹出层动画效果的示例代码
2020/09/25 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
Python中字典(dict)和列表(list)的排序方法实例
2014/06/16 Python
Python实现对象转换为xml的方法示例
2017/06/08 Python
python实现装饰器、描述符
2018/02/28 Python
通过实例简单了解Python中yield的作用
2019/12/11 Python
python 删除系统中的文件(按时间,大小,扩展名)
2020/11/19 Python
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
德国运动营养和健身网上商店:Myprotein.de
2018/07/18 全球购物
哈萨克斯坦最大的时装、鞋子和配饰在线商店:Lamoda.kz
2019/11/19 全球购物
英国在线药房和在线药剂师:Chemist 4 U
2020/01/05 全球购物
介绍一下Cookie和Session及他们之间的区别
2012/11/20 面试题
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
高中自我鉴定范文
2013/11/03 职场文书
学习十八大报告感言
2014/02/28 职场文书
晚自修旷课检讨书怎么写
2014/11/17 职场文书
银行员工考核评语
2014/12/31 职场文书
诚信承诺书
2015/01/19 职场文书
给领导敬酒词
2015/08/12 职场文书
python基于tkinter实现gif录屏功能
2021/05/19 Python
Windows Server 2016服务器用户管理及远程授权图文教程
2022/08/14 Servers