『壹』 ThinkPHP怎么实现伪静态
tp 的路由随便,url,pathinfo,rewirte 都可以。
我这里用apache举例:
1 开启rewirte : LoadMole rewrite_mole moles/mod_rewrite.so
2 网站根目录增加 .htaccess 文件,内容如下:
RewriteEngine on
RewriteBase /
RewriteRule ^local/show_(\d*).html index.php/local/show/id/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteRule ^(.*)$ index.php/$1 [L]
我这里的 local/show_(\d*).html index.php/local/show/id/$1 是根据当前tp的路由来写的
如果是url模式可写为 :
RewriteRule ^local/show_(\d*).html index.php?m=local&a=show&id=$1 [L]
测试:
localAction.class.php 内容为:
<?php
class localAction extends Action{
public function show(){
echo 'id is: ' .$_GET['id'];
}
}
?>
『贰』 thinkphp 怎么通过.htaccess 显现伪静态
伪静态技术是一种折中方案,它允许网站以静态页面的形式呈现给用户,同时保持动态内容的实时更新能力,这在一定程度上兼顾了搜索引擎的友好性和网站内容的灵活性。
对于使用Windows操作系统的用户来说,创建一个无文件名的文件是一项挑战,因为Windows系统不支持直接创建这种类型的文件。然而,通过使用文本编辑器并选择“另存为”功能,可以创建一个名为.htaccess的文件。这个文件通常用于定义Apache服务器的规则,以便实现伪静态。
伪静态技术的核心在于,尽管页面显示的形式是静态的,但实际上是由动态脚本处理的。这使得网站可以灵活地处理各种动态内容,如用户评论、实时数据更新等,同时保持对搜索引擎的友好性。
创建.htaccess文件并配置规则的过程相对简单。首先,需要确定网站根目录下的位置,然后使用文本编辑器打开该目录,接着保存一个名为.htaccess的文件。在这个文件中,可以添加特定的规则,以实现所需的伪静态效果。例如,可以设置URL重写规则,将请求从一个URL重定向到另一个URL,从而实现动态内容的静态展示。
值得注意的是,不同版本的Apache服务器可能需要不同的.htaccess规则配置。因此,在进行配置之前,建议查阅相关文档或寻求技术支持,以确保规则的正确性和有效性。
通过这种方式,伪静态技术为开发者提供了一种灵活的解决方案,能够在保持网站内容实时更新的同时,提升搜索引擎的友好度。
『叁』 php静态化页面方法,伪静态的也可以
PHP伪静态写法--其一
伪静态又名:URL重写
主要是为了SEO而生的。(SEO是什么?这个不用问我吧。呵呵~搞网络的不懂SEO那就~~~~)
方法一:
比如这个网页
http://www.2cto.com /soft.php/1,100,8630.html
其实处理的脚本是soft.php 参数为1,100,8630
相当于soft.php?a=1&b=1=100&c=8630 只不过这样的URL太难记。搜索引擎也不喜欢。
真静态只是完全生成了HTML。
客户端访问的时候直接输出。不用脚本解释。在流量非常大的时候(比如每天有上百万的访问量的时候)会起到很好的效果。也就是说服务器端实实在在的存在这个HTML页面。
当然在你网站的流量没有那么大的时候。URL重写是最好的方法(个人观点,大流量的时候可以考虑负载均衡了。同样没有关系)
附URL重写的方法有很多种,APACHE,IISREWRITE。甚至PHP脚本都可以直接处理。比如上例中就是PHP脚本直接处理(该方法好处是大流量的时候直接减轻WEB伺服器的压力。PS:同样也是个人观点:
================================================
下面以程序为例讲一下PHP伪静态的程序实现方法,其实这方法我之前已经有在其它论坛社区发过
程序为例:
http://www.2cto.com /soft.php/1,100,8630.html
CODE:
//利用server变量 取得PATH_INFO信息 该例中为 /1,100,8630.html 也就是执行脚本名后面的部分
if(@$path_info =$_SERVER["PATH_INFO"]){
//正则匹配一下参数
if(preg_match("/\/(\d+),(\d+),(\d+)\.html/si",$path_info,$arr_path)){
$gid =intval($arr_path[1]); //取得值 1
$sid =intval($arr_path[2]); //取得值100
$softid =intval($arr_path[3]); //取得值8630
}else die("Path:Error!");
//相当于soft.php?gid=1&sid=100&softid=8630
//就是这么简单了。~)
方法二:
一 打开 Apache 的配置文件 httpd.conf 。
二 将#LoadMole rewrite_mole moles/mod_rewrite前面的#去掉
三 在 httpd.conf中添加:
<IfMole mod_rewrite.c>
RewriteEngine On
#RewriteCond %{ENV:SCRIPT_URL} (?:index|dispbbs)[-0-9]+.html
RewriteRule ^(.*?(?:index|dispbbs))-([-0-9]+).html 1.php?__is_apache_rewrite=1&__rewrite_arg=2
</IfMole>
四 要实现asp帖子URL到php帖子的映射,在 第三步的<IfMole mod_rewrite.c>和</IfMole>之间添加:
RewriteMap tolowercase int:tolower
RewriteCond %{QUERY_STRING} (?:boardid|page|id|replyid|star|skin)=d+ [NC]
RewriteRule ^(.*(?:index|dispbbs)).asp 1.php?{tolowercase:%{QUERY_STRING}}&__is_apache_rewrite=1
五 保存httpd.conf并重启Apache
方法三:
<?php
/*
功能:PHP伪静态化页面的实现
具体用法:
例如链接为:test.php/year/2006/action/_add.html
mod_rewrite();
$yearn=$_GET["year"];//结果为'2006'
$action=$_GET["action"];//结果为'_add'
*/
function mod_rewrite(){
global $_GET;
$nav=$_SERVER["REQUEST_URI"];
$script_name=$_SERVER["SCRIPT_NAME"];
$nav=substr(ereg_replace("^$script_name","",urldecode($nav)),1);
$nav=preg_replace("/^.ht(m){1}(l){0,1}$/","",$nav);//这句是去掉尾部的.html或.htm
$vars = explode("/",$nav);
for($i=0;$i<Count($vars);$i+=2){
$_GET["$vars[$i]"]=$vars[$i+1];
}
return $_GET;
}
mod_rewrite();
$yearn=$_GET["year"];//结果为'2006'
$action=$_GET["action"];//结果为'_add'
echo $yearn;
echo $action;
?>
<?php
/*
功能:PHP伪静态化页面的实现
具体用法:
例如链接为:test.php/year/2006/action/_add.html
mod_rewrite();
$yearn=$_GET["year"];//结果为'2006'
$action=$_GET["action"];//结果为'_add'
*/
function mod_rewrite(){
global $_GET;
$nav=$_SERVER["REQUEST_URI"];
$script_name=$_SERVER["SCRIPT_NAME"];
$nav=substr(ereg_replace("^$script_name","",urldecode($nav)),1);
$nav=preg_replace("/^.ht(m){1}(l){0,1}$/","",$nav);//这句是去掉尾部的.html或.htm
$vars = explode("/",$nav);
for($i=0;$i<Count($vars);$i+=2){
$_GET["$vars[$i]"]=$vars[$i+1];
}
return $_GET;
}
mod_rewrite();
$yearn=$_GET["year"];//结果为'2006'
$action=$_GET["action"];//结果为'_add'
echo $yearn;
echo $action;
?>