laravel页面静态化 支持其他各种框架。

2021-10-21 16:00:58 浏览数 (1)

laravel页面静态化 支持其他各种框架。

2017-12-14

由于公司业务需要,对官网进行了页面静态化。同时在此记录下方法。 服务器环境: centos 7.3 apache   PHP7.1  框架:laravel5.3  基本要求: 1.apache rewrite 必须得开启的. 2. .htaccess 重写     

代码语言:javascript复制
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

         若是单一入口文件,应该都是有这个配置的,尤其是第一句话:RewriteCond %{REQUEST_FILENAME} !-f   意思是,如果不存在和REQUEST_FILENAME 匹配的文件,才跳转至index.php

3.以laravel为例: 在public文件下创建zixun文件夹,并给777权限。  这种父级目录得人工创建, 因为给public目录 777权限的化过于可怕。

4.上代码: 

代码语言:javascript复制
//生成静态页方法
function create_static_page($path,$file_name,$content){
   if(is_dir($path)){
    $file_name = handle_file_name($path,$file_name);
    file_put_contents($file_name, $content);
    chmod($file_name,0777);  
   }   
  return $content;
}
//删除静态页方法
function delete_static_page($file){
  if(is_file($file)){
    unlink($file);
  }
}
//清空目录下所有静态页方法
function delete_all_static_page($path){
    $file_path=scandir($path);
    foreach ($file_path as  $value) {
      if($value!='.' &&$value!='..')  
      {  
        delete_static_page(handle_file_name($path,$value));
      } 
    }
}
//文件路径处理函数
function handle_file_name($path,$file_name){
  if(substr($path, -1,1)=='/'){
      return $path.$file_name;
    }else{
      return $path.'/'.$file_name;
  }
}

5.方法举例:( laravel的看这里!)

    laravel的视图在渲染输出时的函数     

代码语言:javascript复制
return view('zixun/article');

这里是直接把渲染好的视图输出了,我们截断它。

换成:

代码语言:javascript复制
$string = view('zixun/article')__toString();
return create_static_page(public_path().'/zixun',$id.'.html',$string);

意思就是,将渲染好的内容,传给我的 静态页方法来处理。

如果你的文件权限、方法调用什么的都没问题,那在public/zixun 下面应该就生成了对应的html文件。

这样你访问对应的url时,就访问的是静态页的内容了。  例如:  www.slidyy.com/zixun/111.html

6.静态页更新:

    通过删除对应的静态页来实现,因为没有该静态页了,自然访问的就是对应的控制器了。

    这里提供两个方法:

        1. delete_static_page  删除特定的静态页   例如delete_static_page(public_path().'/zixun/111.html');

        2. delete_all_static_page()  删除特定目录下的所有静态页  例如: delete_all_static_page(public_path().'/zixun/');

0 人点赞