自定义thinkphp程序的伪静态规则,包含纯静态位置指定死链跳转

2022-09-04
367次阅读
没有评论

部分规则是在网站找的,部分规则是在现有的程序中提取的。

自定义thinkphp程序的伪静态规则,包含纯静态位置指定死链跳转

现在使用的规则分为三个,第一个是纯静态生成的内容指定,因为thinkphp的纯静态功能是我自己写的,所以放在了一个固定的文件夹中,原本就是放在根目录下面,但是一段时间后我觉得不是很好管理,一旦所有的目录都生成了会产生很多文件夹,所以我根据 wordpress 的静态插件修改了指向规则,这样可以把所有生成的内容放在统一的文件夹下面,便于管理了。

第二个,是404规则,原本打算把我的 wordpress 程序数据全部迁移到 thinkphp 程序中,那样的话我之前格式 https://ssooo.cn/1.html 这种格式也要转换成 https://ssooo.cn/post/1.html 这种格式,我不是很会写程序中的路由,所以在伪静态规则上动手,经过测试也已经完美可使用了。

第三个就是 thinkphp 本身的规则,这个不需要动,直接放在最后面就行。

完整的规则:

location / {
    gzip_static always;
    gunzip on;

    if (-f $request_filename) {
        break;
    }
    if ($uri ~ /(.*)$){
        set $wpuri $1;
        set $sscfile $document_root/static-cache/$1;
    }
    set $ssc Y;
    if ($query_string !~ .*=.*){
        set $ssc "${ssc}Y";
    }
    if ($request_method != "POST"){
        set $ssc "${ssc}Y";
    }

    if (-f $sscfile){
        set $ssc "${ssc}F";
    }
    if (-f $sscfile/index.html){
        set $ssc "${ssc}I";
    }
    if ($ssc = YYYF){
        rewrite . /static-cache/$wpuri break;
    }
    if ($ssc = YYYI){
        rewrite . /static-cache/$wpuri/index.html break;
    }
	if (!-e $request_filename){
	  rewrite  ^/(d+).html  http://$host/article/$1.html permanent;
	  rewrite  ^(.*)$  /index.php?s=$1  last;   break;

	}
}

现在还有一个问题,就是第一个方法指定 static-cache 生成页面,然后访问网站跳转到 static-cache 但不显示 static-cache 这个文件夹在网址中,现在只能生成二级,目前我的程序中 tag 功能生成的基本都是三级,所以测试的时候发现了问题,目前还没有好的解决办法,暂时也只能这样了,现在的网站数据还没有达到一个大的基数,目前不开静态也行。等真正需要开启静态之后我后面会想办法解决这个问题的, 要么 tag 变成二级,要么还要继续完善这个规则。

正文结束
居烽
版权声明:本站原创文章,由 居烽 于2022-09-04发表,共计1170字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。