伪静态

从形式上看是一个静态地址,实际上还是访问的动态地址,

比如:访问:http://www.abc.com/news-sport-id123.html

实际上是:http://www.abc.com/news.php?type=sprot&id=123;

作用:主要是利于seo,静态页面的方式,比较容易被搜索引擎给搜集。

Localhost/6.php     输入 localhost/6.html 同样能输出跟6.php同样的内容

1、实现原理:

使用apac he的rewrite机制。

rewrite机制:就是一个url的重写机制,

2、如何开启重写模块,

在httpd.conf文件中进行开启。

3、配置方式:

1)直接在配置虚拟主机httpd-vhosts.conf进行配置 ,每次修改apache的文件都需要重启apache

<VirtualHost *:80>

#主机名

ServerName  localhost

#开启重写引擎

RewriteEngine on

#写重写规则

RewriteRule /index.html  /6.php [L]

#文件的根目录路径

DocumentRoot  "E:/server/apache/htdocs"

<Directory  "E:/server/apache/htdocs">

#结构样式

#打开默认的首页

DirectoryIndex  index.php  index.html

#打开默认索引列表

Options  Indexes  FollowSymLinks

#权限

#权限控制   先拒绝后允许

Order Deny,Allow

#允许所有用户进行访问

AllowOverride All

Allow from  All

</Directory>

</VirtualHost>

2. httpd.conf文件

<Directory />

AllowOverride all    改成all

Require all denied

</Directory>

3)分布式配置 具体的.htaccess文件中的配置: 在网站的根目录下创建一个文件,文件名为.htaccess

<ifModule rewrite_module>

#打开重写引擎

RewriteEngin on

#RewriteCond 判断条件(服务器变量) 条件表达式  [条件标志]

#RewriteRule  规则url   目标url  [规则的标志]   (.*).html   $1.php [L]

</ifModule>

4、具体的语法:

RewriteEngine on  #开启重写引擎

RewriteCond  重写条件,要满足一定的条件才重写。

CI框架中的重写规则

第一步: 在虚拟主机开启  AllowOverride All

第二步: //配置伪静态时 在CI框架的配置文件 config中 修改 URL协议为

$config['uri_protocol']     = 'PATH_INFO';

RewriteCond条件的语法:

RewriteCond   判断依据   条件表达式 [条件标志]

(1)判断依据:可以使用服务器变量:

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

比如:%{REQUEST_FILENAME}  表示请求的文件名称

比如:%{HTTP_REFERER}:表示请求的来源。

(2)条件表达式:可以是一些标志,或者字符串

比如:

-d   表示是一个目录

-f    表示是一个文件

RewriteCond %{REQUEST_FILENAME} !-d  //如果请求的路径不是一个目录

RewriteCond %{REQUEST_FILENAME} !-f  //如果请求的路径不是一个文件

(3)[条件标志]

[NC]表示不区分大小写

[OR],在默认情况下多个条件(RewriteCond)之间是并且的关系。如果我们使用或关系则后台添加[OR]标志。

RewriteRule  语法规则

RewriteRule   规则的url(可以使用正则)  目标url  [规则标志]

规则标志:

[F] 表示:表示禁止重写

[NC] 表示:不区分大小写

伪静态是相对真实静态来讲的,通常我们为了增强搜索引擎的 友好面,都将文章内容生成静态页面,但是有的朋友为了实时的显示一些信息。或者还想运用动态脚本解决一些问题。不能用静态的方式来展示网站内容。但是这就 损失了对搜索引擎的友好面。怎么样在两者之间找个中间方法呢,这就产生了伪静态技术。就是展示出来的是以html一类的静态页面形式,但其实是用ASP一 类的动态脚本来处理的。
IIS的404错误处理机制来实现的。这个比rewrite技术要灵活的多。
首先,设置站点属性-自定义错误,找到HTTP错误404,然后编辑属性->消息类型选中URL->URL填入“/index.asp”,或您的错误处理页面。
这样,比如用户或蜘蛛访问http://网址XXX/12345.html时(12345为文章在数据库的ID).由于这些页面不存在,所以触发了404错误。转向了index.asp
在index.asp里添加
CurrDomain=Request.ServerVariables("HTTP_HOST") '当前访问域名
CurrURL=Replace(Request.ServerVariables("QUERY_STRING"),"404;http://"&CurrDomain&":80") '当前访问URL
此时的CurrURL应该是:12345.html .
这样,就得到用户正在试图访问的页面。然后提取里边的文章ID(应该为:12345),用正则,这里就不多说了。
然后到数据库里提取出文章内容。输出到页面里,就OK了。
这样。用户或蜘蛛看到的URL还是他访问的URL.而我们对内容的处理上可以用到了动态技术。这就是我们想要的结果。说得简单了一些。但是基本思路就是这样了。
 

PHP如何实现网址伪静态

Apache的 mod_rewrite是比较强大的,在进行网站建设时,可以通过这个模块来实现伪静态。

主要步骤如下: 1.检测 Apache是否开启mod_rewrite功能     可以通过php提供的phpinfo()函数查看环境配置,找到“Loaded Modules”,其中列出了所有apache2handler已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设 置。如果没有开启“mod_rewrite”,则打开目录 apache目录下的“/apache/conf/” ,找到 httpd.conf 文件,再找到“LoadModule rewrite_module”,将前面的”#”号删除即表示取用该功能。    如果没有查找到“LoadModule” 区域,可以在最后一行加入“LoadModule rewrite_module ,modules/mod_rewrite.so”(独占一行),之后重启apache服务器。再通过phpinfo()函数查看环境配置就有 “mod_rewrite”为项了.。

2.让apache服务器支持.htaccess    如何让自己的本地APACHE服务器支持:“htaccess”呢? 只需修改apache的httpd.conf设置就可以让 APACHE支持“.htaccess”了。打开 APACHE目录的CONF目录下的httpd.conf文件,找到: Options FollowSymLinks AllowOverride None 改为 Options FollowSymLinks AllowOverride All 就行了。

3.建立.htaccess 文件    建立.htaccess文件时要注意,不能直接建,方法是通过记事本中的另存为菜单,在文件名窗口输入:“.htaccess”,然后点击保存。

4.rewrite 规则学习    在新建.htaccess文件之后,就在里面写入以下内容: RewriteEngine on #rewriteengine为重写引擎开关on为开启off为关闭 RewriteRule ([0-9]{1,})$index.php?id=$1 在这里,RewriteRule是重写规则,是用正则表达式的句子,([0-9]{1,})表 示由数字组成的,$表示结束标志,表示以数字结束!如果要实现伪静态页面,规则如下: RewriteEngine on RewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$index.php?action=$1&id=$2 在为个正则表达式中, ([a-zA-Z]{1,})-([0-9]{1,}).html$是规则,index.php?action=$1&id=$2是要替换的格 式,$1代表第1括号匹配的值,$2代表第二个括号的值,如此类推! 测试PHP脚本如下: index.php文件中的代码如下: echo ‘你的Action值为:’ . $_GET['action']; echo ‘ ’; echo ‘ID值为:’ . $_GET['id']; ?>

在浏览器地址栏输入: localhost/page-18.html 输出的是: 你的Action值为:page ID值为:18

如何选择真静态和伪静态?

网站实时性要求高,不要使用静态化(真静态,伪静态均不适宜)。

如果网站访问量较小,没有必要使用静态化技术

如果数据项目不多,但是访问频率极大,建议使用真静态,比如新浪新闻频道。

如果数据项目海量,使用真静态会生成海量的html静态页面,建议使用伪静态。

在一个大型网站中,静态化技术是综合使用的,这个需要大家经验的积累,多做项目。(sina网站:新闻频道,真静态,基金频道:伪静态,管理后台:不使用静态技术)

PHP伪静态的更多相关文章

  1. PHP如何实现网址伪静态

    Apache的 mod_rewrite是比较强大的,在进行网站建设时,可以通过这个模块来实现伪静态. 主要步骤如下: 1.检测Apache是否开启mod_rewrite功能     可以通过php提供 ...

  2. wamp集成环境开启rewrite伪静态支持

    wamp集成环境在安装完后,默认是没有开启伪静态的,所以有时把项目部署进去时如果源码里包含.htaccess文件的话,可能会出现500错误,这一般是因为不支持伪静态造成的,解决这个问题的办法就是开启伪 ...

  3. ASP.NET伪静态实现

    ASP.NET伪静态实现 在asp.net下,如何自己写代码来实现伪静态呢?如何重写url地址呢? 例如:本来aspx的页面地址是:/default.aspx?id=1,我要重写成这样:/index- ...

  4. phpstudy配置伪静态的方法

    mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面.下面我详细说说它的使用方法1.检测Apache是否支持mod_rewrite通过php提供的phpinfo()函数查看环 ...

  5. Url重写——伪静态实现

    简述: 在我们浏览网站的时候,很多都是以.html结尾的.难道这些都是静态网页么?其实不是的,它们很多是伪静态 那么什么是伪静态?顾名思义,就是假的静态页面.通过某种设置让你看成是静态的. Q:为何要 ...

  6. Apache服务器网站访问伪静态内页出现No input file specified.的完美解决方案

    原文地址:Apache服务器网站访问伪静态内页出现No input file specified.的完美解决方案 启用REWRITE的伪静态功能的时候,首页可以访问,而访问内页的时候,就提示:&quo ...

  7. IIS7.5使用web.config设置伪静态的二种方法

    转自 网上赚钱自学网 .http://www.whosmall.com/post/121 近几天公司里开发的项目有几个运行在IIS7.5上,由于全站采用的是伪静态,因此从网上找到两两种方法来实现.这两 ...

  8. IIS7.5+WebConfig实现页面伪静态和301重定向

    IIS7.5+WebConfig实现页面伪静态和301重定向 使用URLRewriter组件在windows 2003 +iis 6.0下配置伪静态的文章网络上一大堆.但在iis7.0或iis 7.5 ...

  9. 伪静态下Post无法响应的问题

    页面进行伪静态,Post的地址就不要写相对路径了,这样容易出错. 原来路径为,/SC/ProductDetail.aspx?id=110 用相对路径, 那么post的地址为:/SC/ProductDe ...

  10. 在微软伪静态处理机制下action导致伪静态的地址重现的问题

    伪静态前的地址:/sc/ProductList.aspx?pClass=0&descType=2&minPrice=1&maxPrice=11 伪静态后的地址:/product ...

随机推荐

  1. PHP mkdir 0777权限问题

    在linux系统中,即使我们使用root帐号去手工执行php命令: mkdir('test', 0777); 结果文件的权限依然为: drwxr-xr-x 2 root root 4096 Jun 1 ...

  2. PHP通用的XSS攻击过滤函数,Discuz系统中 防止XSS漏洞攻击,过滤HTML危险标签属性的PHP函数

    XSS攻击在最近很是流行,往往在某段代码里一不小心就会被人放上XSS攻击的代码,看到国外有人写上了函数,咱也偷偷懒,悄悄的贴上来... 原文如下: The goal of this function ...

  3. 第2月第25天 BlocksKit

    1.blockskit https://github.com/zwaldowski/BlocksKit bk_showAlertViewWithTitle 2.toast +(void)showToa ...

  4. HMac基本介绍

    基本介绍 HMAC(散列消息身份验证码: Hashed Message Authentication Code) 它不是散列函数,而是采用散列函数(MD5 or 或SHA)与共享密钥一起使用的消息身份 ...

  5. springmvc 表单提交

    Spring MVC自带的表单标签比较简单,很多时候需要借助EL和JSTL来完成. 下面是一个比较简单的表单提交页面功能: 1.User model package com.my.controller ...

  6. 引用项目外dll时不显示注释的解决方案

    在引用项目外的dll时,显示类库中的注释可按以下步骤: 方法或变量用summary添加注释,如:         /// <summary>发送post请求         /// < ...

  7. html5页面打包成App - Android或Iphone安装程序

    下载安装前端开发工具:HBuilder 官网下载:http://www.dcloud.io/ 根据官网说明安装 * 打开登录HBuilder,把做好的H5页面通过添加app项目把H5的文件夹加入进来( ...

  8. 利用Python自动生成暴力破解的字典

    Python是一款非常强大的语言.用于测试时它非常有效,因此Python越来越受到欢迎. 因此,在此次教程中我将聊一聊如何在Python中生成字典,并将它用于任何你想要的用途. 前提要求 1,Pyth ...

  9. [转]MyEclipse 里查看jar文件源码

    在开发过程中,有时候需要查看jar文件的源码,这里讲解如何设置.  选中某一个jar文件,如我这里选中的是struts2-core-2.1.6.jar,然后右键-->Properties--&g ...

  10. 如何有效地描述软件缺陷(Defect)?

    最近一个月偷懒了,刚看到一篇博文很不错.最近也是碰到一样的问题,由于我记录bug的描述不够清晰.导致开发看不懂我描述的bug,还有一些配置信息没记录好.出现一问三不知的情况,还被领导训.下面的博文是来 ...