开启pathinfo模式-阿里云服务器

今天在阿里云服务器上安装DUXCMS1.1稳定版的cms系统时,突然遇到好多问题,首先是提示404错误找不到页面,之后又报500错误,总之出现一大堆问题,这是之前我用阿里云没有碰到过的情况。一开始我以为是没有配置rewrite的问题但是配置后还是不可以,经过反复的百度后终于找到问题的所在原来是pathinfo的问题,想必其它人也有遇到过,玩过thinkphp的人也应该遇到过,不过怎么样最终问题还是解决了。本人用的阿里云是nginx的下边是配置文件。

server {
listen 80;
server_name www.viphper.com;  #改成自己的
index index.html index.htm index.php;
root /alidata/www/;  #改成自己的

location ~ \.php
{
#try_files $uri =404;
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
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;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 1h;
}

#duxcms rewrite
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}

#伪静态规则
#include /alidata/server/nginx/conf/rewrite/rewrite.conf;  #这个注释掉了
access_log /alidata/log/nginx/access/log.log;
}

下边是一部分文件的注释:

location ~ \.php
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
set $path_info “”;#初始化一个变量
set $real_script_name $fastcgi_script_name;#初始化一个变量,并且获取到一个原始赋值
if ($fastcgi_script_name ~ “^(.+?\.php)(/.+)$”) {#检测如果.php后面还存在/开始参数,将参数处理
set $real_script_name $1;#将第一个正则子串匹配到的赋值
set $path_info $2;#将第二个正则子串匹配到的赋值
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;#修改SCRIPT_FILENAME值
fastcgi_param SCRIPT_NAME $real_script_name;#修改SCRIPT_NAME值
fastcgi_param PATH_INFO $path_info;#修改PATH_INFO值
#上述三个赋值都是replace into的模式,这些值都是写在fcgi.conf中
}

解释:pathinfo的原理就是将index.php/xxxx/xxx类似的网址当做php来执行,并且需要将xxx/xxx写入到$_SERVER[‘PATH_INFO’]中

注意:location中的正则中不能写了$,$表示就此结束(?表示前面的php只匹配一次)

location ~ .*\.(php|php5)?$  #注:这个地方不能有$
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
}

作者:PHP学习网,本文 开启pathinfo模式-阿里云服务器 版权归作者,免费文章欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

发表评论