开启PHP的伪静态模式


一直在做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提供的参考信息丰富。

最后,樂思蜀觉得Google此文中是否有其隐藏含义?“更新此种类型网址的页面会比较耗费时间,尤其是当信息量增长很快时,因为每一个单独的页面都必须更改编译代码。”虽然所说的是网站,但在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)。



相关阅读:
jQuery 中ajax异步调用的四种方式
Win10到底啥什么时候正式发布?微软Build 2015未公布确切上市时间
基于html5和nodejs相结合实现websocket即使通讯
win10安装密钥更新变化有哪些? win10安装密钥新变化的内容
html禁止清除input文本输入缓存的两种方法
JavaScript实现梯形乘法表的方法
jquery学习总结(超级详细)
jQuery.Highcharts.js绘制柱状图饼状图曲线图
php通过array_merge()函数合并两个数组的方法
后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
jQuery插件pagination实现无刷新分页
java利用Ant脚本生成war包全过程
Win10 Mobile 10586.107怎么更新?Lumia950/XL/550可升级
jQuery DataTables插件自定义Ajax分页实例解析
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 CMS SQL jQuery C# C++ java Android IOS oracle MongoDB PostgreSQL SQLite 交通频道 安吉-柳州 南昌-南充 丹东-泉州 七台河-常熟 武汉-南通 永康-双鸭山 安宁-肥城 濮阳-龙岩 襄阳-蓟县 鄂尔多斯-泉州 张家界-眉山 株洲-黄南 瓦房店-江都 双流-石狮 吴忠-开封 重庆-滕州 郑州-库尔勒 锡林浩特-黄山 合肥-哈密 鹤岗-海城 大石桥-无锡 榆林-黄山 贵港-漳州 绵阳-佳木斯 漯河-昆山 宝鸡-丽水 齐齐哈尔-滁州 晋中-连云港 六盘水-荆州 蚌埠-通化 天津-广元 齐齐哈尔-锦州 寿光-淮北 马鞍山-玉林 抚州-大理 阜新-临沂 宜昌-乌海 安宁-茂名 赤峰-菏泽 鹰潭-佳木斯 大同-宜春 蓟县-平湖 成都-丽水 阿克苏-商洛 沈阳-那曲 焦作-威海 丹阳-襄阳 仪征-哈尔滨 宁乡-巢湖 广饶-南安 内江-临汾 滁州-桂林 雅安-盐城 江门-临安 龙岩-曲靖 西宁-三明 龙海-佛山 银川-如皋 长春-象山 拉萨-迁安 垦利-莱芜 庄河-威海 通辽-浏阳 丽江-宜兴 孝感-常州 寿光-毕节 龙口-安顺 杭州-郑州 百色-余姚 莱西-和田 安顺-招远 广元-舟山 桓台-绥化 衢州-乌鲁木齐 神木-台州 邹城-石家庄 宁德-海盐 宿州-凉山 牡丹江-广州 蓟县-揭阳 红安西-绍兴北 东莞东-淮南 大虎山-沟帮子 宜昌东-青州市 曹县-咸宁 哈尔滨-长兴南 成都东-长寿北 章丘-广州东 武汉-左岭 漳州-威舍 佟家-秋木庄 聊城-平顶山西 东乡-信丰 昌图西-滨海 河源-吉安 融安-融水 余杭-邵阳北 大关-草海 郑州-海石湾 成都-信阳 巢湖-商城 义乌-滦县 临泽-武威南 山阴-杭州 来宾北-鹰潭北 邯郸东-定州东 镇平-米脂 肇庆-潼南 弥勒-石林西 长春-林东 新彦-乌鲁布铁 潍坊-界首市 繁峙-闻喜 无锡-萍乡 铜罐驿-李市镇 白洋淀-徐水 内乡-平安驿 定陶-商丘南 磁窑-阜宁 东海县-榆次 定州-获嘉 沈阳北-花园 顺昌-江油 龙市-天津 罗平-东安东 吴堡-汾阳 涡阳-邹城 亚河-海林 吉首-乌鲁木齐南 黄冈-恩施 沈阳-金州 南昌-大同 富县东-灵宝 伊宁-尼勒克 蔡家坡-汉源 乌鲁木齐-巴楚 茶陵南-全州南 佳木斯-阎家 兴城-大同 鹰潭-遂溪 三门峡-宣汉 六盘水-天柱山 万源-昆明 青岛-梁山 凤州-交城 双石桥-峰高铺 新县-唐河 齐齐哈尔-青龙 青岛北-驻马店 天津南-桃村北 阳泉北-定边 海阳-广州 柞水-绥德 北京西-洛阳 金州-张家口南 郑州-商丘 大兴-青水山 王场-小关溪 大同-广水 羊圈子-下马塘

Copyright © 2016 phpStudy |