伪静态

伪静态:没有静态文件的静态化

伪静态实现
比如这个网页
http://www.*.net/soft.php/1,100,8630.html
其实处理的脚本是soft.php 参数为1,100,8630
相当于soft.php?a=1&b=100&c=8630 只不过这样的URL太难记。搜索引擎也不喜欢。
真静态只是完全生成了HTML。
客户端访问的时候直接输出。不用脚本解释。在流量非常大的时候(比如每天有上百万的访问量的时候)会起到很好的效果。也就是说服务器端实实在在的存在这个HTML页面。
当然在你网站的流量没有那么大的时候。URL重写是最好的方法(个人观点,大流量的时候可以考虑负载均衡了。同样没有关系)
附URL重写的方法有很多种,APACHE,IISREWRITE。甚至PHP脚本都可以直接处理。比如上例中就是PHP脚本直接处理(该方法好处是大流量的时候直接减轻WEB伺服器的压力。

【2重写规则实现】

apache rewrite:现URL的跳转和隐藏真实地址

2.Apache Rewrite的配置

Apache下的Rewrite配置主要有两种,一种是针对整个apache服务器的配置,此种配置的Rewrite规则是直接
在httpd.conf下书写。配置步骤如下:
(1)去除httpd.conf文件中"#LoadModule rewrite_module modules/mod_rewrite.so"前面的"#"号;
(2)然后再在httpd.conf中书写如下规则:
RewriteEngine on
#当访问任何以t_开头,以.html结尾的文件时,将$1用与(.*)匹配的字符替换后,访问相应的test.php页面
RewriteRule ^/t_(.*).html$ /test.php?id=$1

另一种是针对apache服务器下的某一目录的配置,此种配置的Rewrite规则需在此目录下建立一个.htaccess
文件来书写。配置步骤如下:
(1)去除httpd.conf文件中"#LoadModule rewrite_module modules/mod_rewrite.so"前面的"#"号;
(2)修改httpd.conf文件中的(232行)"AllowOverride None"为"AllowOverride all",同时最好将Options
也置为"all",否则可能会出问题。
(3)在根目录中建立.htaccess文件,并用记事本打开,书写如下规则

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

  <ifModule rewrite_module>

   #打开重写引擎

   RewriteEngin on

   #RewriteCond 判断条件(服务器变量) 条件表达式  [条件标志]     不要带根目录表示符/

   #RewriteRule  规则url   目标url [规则的标志]

 </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)判断路径

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

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

3)[条件标志]

[NC]表示不区分大小写

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

RewriteRule  语法规则

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

规则标志:

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

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

一下有一些写的规则!了以参考一下

#开启重写引擎
RewriteEngine on
#写重写规则
#RewriteRule (\d+)_(.*).html   Day13/text.php?page=$1&&title=$2 [L,NC]
#RewriteRule  index.html   Day13/text.php [L,NC]
# %是如果的意思 {HTTP_REFERER} 请求的来源 一般非本站访问的头信息中都会有该来源 !^$ :非空
# %{HTTP_REFERER}   !http://www.jb.com.* :该请求的来源不是来自于这个网站
# RewriteRule  .*\.(jpg|png|gif|jpeg)$  110.gif [L] :一旦上面两个满足条件就会触发该重写规则
#RewriteCond %{HTTP_REFERER}   !^$ [NC]
#RewriteCond %{HTTP_REFERER}   !http://www.jb.com.* [NC]
#RewriteRule  .*\.(jpg|png|gif|jpeg)$  110.gif [L]
# %{REQUEST_FILENAME} !-d 访问脚本文件名 -d 表示是一个目录 意思是
#:如果请求的路径不是一个目录
# {REQUEST_FILENAME} !-f :如果请求的路径不是一个目录
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteRule  .*        404.html [L]
#写重写规则
RewriteRule  (\d+)_.html     Day14/page.php?page=$1 [L,NC]
RewriteRule   page.html     Day14/page.php  [L,NC]






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值