熊猫之前帮一位同学解决问题时遇到的,当时网站可以正常访问,但是文章页要么打不开,要么就跳回首页去,今天就来说说如何解决这种情况。

运行环境:nginx+linux

问题描述:
网站可正常打开,文章列表标题,描述正常,无法打开文章页

问题原因:
PHP不支持pathinfo

Typecho官方解决方案,会复现:
http://docs.typecho.org/servers

最终解决方法:
将 Nginx 的 PHP 段改成如下形式,就可以访问文章页了

```
location ~ .*\.php(\/.*)*$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+?.php)(/.*)$;
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 /usr/share/nginx/html$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
include fastcgi_params;
}
```

也就是添加 fastcgi_split_path_info ^(.+?.php)(/.*)$; 由 Nginx 设置 PATH_INFO 值。

```
sudo systemctl restart nginx
sudo systemctl restart php-fpm
```

重启服务器以生效