开启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安全配置方法
Jun 16 PHP
php 字符串函数收集
Mar 29 PHP
yii框架源码分析之创建controller代码
Jun 28 PHP
php实现多张图片上传加水印技巧
Apr 18 PHP
php缓冲 output_buffering的使用详解
Jun 13 PHP
ThinkPHP模板之变量输出、自定义函数与判断语句用法
Nov 01 PHP
PHP答题类应用接口实例
Feb 09 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
Dec 09 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
Sep 09 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
Feb 07 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
php 字符串中是否包含指定字符串的多种方法
Apr 12 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简单封装了一些常用JS操作
2007/02/25 PHP
php获取目录所有文件并将结果保存到数组(实例)
2013/10/25 PHP
codeigniter自带数据库类使用方法说明
2014/03/25 PHP
php连接odbc数据源并保存与查询数据的方法
2014/12/24 PHP
PHP输出缓冲控制Output Control系列函数详解
2015/07/02 PHP
php实现中文转数字
2016/02/18 PHP
PHP实现Redis单据锁以及防止并发重复写入
2018/04/10 PHP
thinkphp5.1框架容器与依赖注入实例分析
2019/07/23 PHP
Javascript客户端将指定区域导出到Word、Excel的代码
2008/10/22 Javascript
用js实现的自定义的对话框的实现代码
2010/03/21 Javascript
JavaScript中valueOf函数与toString方法深入理解
2012/12/02 Javascript
让AJAX不依赖后端接口实现方案
2012/12/03 Javascript
不同编码的页面表单数据乱码问题解决方法
2015/02/15 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
jquery调整表格行tr上下顺序实例讲解
2016/01/09 Javascript
JS简单实现tab切换效果的多窗口显示功能
2016/09/07 Javascript
vue-cli项目使用mock数据的方法(借助express)
2019/04/15 Javascript
模块化react-router配置方法详解
2019/06/03 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
Python基于pygame实现的弹力球效果(附源码)
2015/11/11 Python
python实现获取Ip归属地等信息
2016/08/27 Python
Django实战之用户认证(用户登录与注销)
2018/07/16 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
Python正则表达式和re库知识点总结
2019/02/11 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
2019/05/15 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
将Python文件打包成.EXE可执行文件的方法
2019/08/11 Python
Python3标准库之threading进程中管理并发操作方法
2020/03/30 Python
希尔顿酒店中国网站:Hilton中国
2017/03/11 全球购物
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
工程力学专业自荐信范文
2014/03/17 职场文书
副科级后备干部考察材料
2014/05/15 职场文书
三好学生先进事迹材料
2014/08/28 职场文书
2014幼儿园小班工作总结
2014/11/10 职场文书
就业意向书范本
2015/05/11 职场文书
离职信范本
2015/06/23 职场文书