PHP伪静态
伪静态
从形式上看是一个静态地址,实际上还是访问的动态地址,
比如:访问: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] 表示:不区分大小写
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伪静态的更多相关文章
- PHP如何实现网址伪静态
Apache的 mod_rewrite是比较强大的,在进行网站建设时,可以通过这个模块来实现伪静态. 主要步骤如下: 1.检测Apache是否开启mod_rewrite功能 可以通过php提供 ...
- wamp集成环境开启rewrite伪静态支持
wamp集成环境在安装完后,默认是没有开启伪静态的,所以有时把项目部署进去时如果源码里包含.htaccess文件的话,可能会出现500错误,这一般是因为不支持伪静态造成的,解决这个问题的办法就是开启伪 ...
- ASP.NET伪静态实现
ASP.NET伪静态实现 在asp.net下,如何自己写代码来实现伪静态呢?如何重写url地址呢? 例如:本来aspx的页面地址是:/default.aspx?id=1,我要重写成这样:/index- ...
- phpstudy配置伪静态的方法
mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面.下面我详细说说它的使用方法1.检测Apache是否支持mod_rewrite通过php提供的phpinfo()函数查看环 ...
- Url重写——伪静态实现
简述: 在我们浏览网站的时候,很多都是以.html结尾的.难道这些都是静态网页么?其实不是的,它们很多是伪静态 那么什么是伪静态?顾名思义,就是假的静态页面.通过某种设置让你看成是静态的. Q:为何要 ...
- Apache服务器网站访问伪静态内页出现No input file specified.的完美解决方案
原文地址:Apache服务器网站访问伪静态内页出现No input file specified.的完美解决方案 启用REWRITE的伪静态功能的时候,首页可以访问,而访问内页的时候,就提示:&quo ...
- IIS7.5使用web.config设置伪静态的二种方法
转自 网上赚钱自学网 .http://www.whosmall.com/post/121 近几天公司里开发的项目有几个运行在IIS7.5上,由于全站采用的是伪静态,因此从网上找到两两种方法来实现.这两 ...
- IIS7.5+WebConfig实现页面伪静态和301重定向
IIS7.5+WebConfig实现页面伪静态和301重定向 使用URLRewriter组件在windows 2003 +iis 6.0下配置伪静态的文章网络上一大堆.但在iis7.0或iis 7.5 ...
- 伪静态下Post无法响应的问题
页面进行伪静态,Post的地址就不要写相对路径了,这样容易出错. 原来路径为,/SC/ProductDetail.aspx?id=110 用相对路径, 那么post的地址为:/SC/ProductDe ...
- 在微软伪静态处理机制下action导致伪静态的地址重现的问题
伪静态前的地址:/sc/ProductList.aspx?pClass=0&descType=2&minPrice=1&maxPrice=11 伪静态后的地址:/product ...
随机推荐
- [Linux] 账户管理命令(二)
组管理 1)groupadd 用于添加一个用户组. 格式:groupadd [-g -o GID] GROUP 其中: GROUP:是要添加的组名 -g:用于指定 GID,默认为使用当前最大的 ...
- 【bzoj3531】 [SDOI2014]旅行
题目描述 S国有N个城市,编号从1到N.城市间用N-1条双向道路连接,满足从一个城市出发可以到达其它所有城市.每个城市信仰不同的宗教,如飞天面条神教.隐形独角兽教.绝地教都是常见的信仰.为了方便,我们 ...
- centos 安装redis(一台机器可以安装多个redis)
我在运行时redis版本是2.8 操作前设置以管理员身份: 打开终端输入 su - 安装redis需要确保系统已经安装了(gcc gcc-c++)# yum -y install gcc gcc-c+ ...
- php-css外边距
css 基本语法 selector{declaration1;declaration2;....delecrationN;} (选择器和一条或多条声明) 选择器为需要改变样式的html元素,每条声 ...
- java27
1:反射(理解) (1)类的加载及类加载器 (2)反射: 通过字节码文件对象,去使用成员变量,构造方法,成员方法 (3)反射的使用 A:通过反射获取构造方 ...
- Spring基础知识
Spring基础知识 利用spring完成松耦合 接口 public interface IOutputGenerator { public void generateOutput(); } 实现类 ...
- mount挂载问题
安装nfs-utils即可
- 解决NetBeans 8.x的字体问题
笔者喜欢用 Consolas 编码,而NetBeans的默认字体是 Monospaced 13. 尽管可以通过"选项-字体和颜色-所有语言"改变默认的字体,比如 Consolas ...
- java.lang.IllegalStateException: getOutputStream() has already been called for this response
ERROR [Engine] StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exceptionjava.lang ...
- 如何让页眉随章节的不同而变化(Word 2010)
在一般情况下,我们将页眉设置完成后,所有章节的页眉都是一样的. 但在某些时候,我们需要让不同的章节拥有各自不同的页眉.那么该如何设置呢? 1. 我们以下图的文件为例,该文件一共包括4个实验,暂未设置页 ...