熊猫之前帮一位同学解决问题时遇到的,当时网站可以正常访问,但是文章页要么打不开,要么就跳回首页去,今天就来说说如何解决这种情况。
运行环境: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
```
重启服务器以生效