编程技术

关于1Panel面板typecho的伪静态配置和开启问题

核心原因

Panel默认的Nginx PHP解析配置不支持PATHINFO,而Typecho的伪静态机制依赖PATHINFO才能正确解析index.php/action/xxx这类地址 。
在1Panel后台“设置伪静态”通常只是导入了重写规则(rewrite ^(.*)$ /index.php$1 last;),但没有同时修改PHP的location解析块。Nginx收到伪静态后的URL(如/index.php/action/options-permalink)时,找不到能处理/路径参数的PHP配置,所以直接返回了404。
只开启伪静态
(PS:可以在网站配置中直接用typecho的预设,如图的方案)

解决步骤

那我们应该怎么开启真正的伪静态呢?
我们知道1Panel使用的是OpenResty + 容器化PHP环境。关键点是:OpenResty作为前端代理,与标准Nginx配置不同。
那我们着手编辑OpenResty这个前端的配置文件即可,将配置文件里的找到 location ~ .php$ 这一段,完全替换。使用代码如下:

 # PHP解析配置 - 支持PATHINFO(解决Typecho伪静态问题)
    location ~ \.php(.*)$ {
        fastcgi_pass 127.0.0.1:9000; 
        fastcgi_index index.php; 
        include fastcgi_params; 
        # PATHINFO核心配置
        set $path_info ""; 
        set $real_script_name $fastcgi_script_name; 
        if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$" ) {
            set $real_script_name $1; 
            set $path_info $2; 
        }
        fastcgi_param SCRIPT_FILENAME $document_root$real_script_name; 
        fastcgi_param SCRIPT_NAME $real_script_name; 
        fastcgi_param PATH_INFO $path_info; 
        fastcgi_param DOCUMENT_ROOT $document_root; 
    }

配置好的截图

配置
最后再去后台>设置>永久链接>打开是否使用地址重写功能就不会报错404了。

虽然作者的初衷是为了sitemap,但是请记住,不打开伪静态是没办法使用网站地图的(悲啊)

本文由 tree 发布于 2026年2月14日,采用 CC BY-NC-SA 4.0 许可,转载请注明出处。

评论

评论加载中…