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

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

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

Handle Authorization Header

RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

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

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

//生成静态页方法
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的视图在渲染输出时的函数


return view('zixun/article');
这里是直接把渲染好的视图输出了,我们截断它。
换成:
$string = view('zixun/article');
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/');
原文链接:

上一篇: PHP 代码规范与质量相关扩展包

下一篇: Mac 系统如何在命令行通过 Sublime Text 打开指定文件/文件夹?