前几天自己新弄了个服务器,nginx的环境, 看到thinkcmf的框架,下载下来准备研究下,安装完成后,发现 url 是 普通模式,然后我就按照那个手册去后台开启了pathinfo模式,这一改完蛋了,网站的url的确是改程pathinfo模式了,但是解析不了,点任何链接都是显示首页。(前后台都是这样,然后我重装了N次尝试找到原因)。后来大概百度找了N多,搞了快俩天。对于我这种搞后台的,对linux相关差不多是小白,这些配置我也不太懂,只能先记录下来以便以后再具体研究了,现总结下:

默认nginx是不开启pathinfo模式的,需要配置,首先去php.ini里把 cgi.fix_pathinfo开启 并设置为1(cgi.fix_pathinfo=1),重启php;

然后需要nginx.conf里配置东西 ,这个是我原配置。

然后找了段代码。我理解的意思是  把location相关的原代码全部删除掉,加上我找的这段代码,注意此时include 的 enable-php.conf也有location的相关配置(其他nginx系统可能也有类似的配置文件,打开都看看,我在这一开始没注意,不懂,没删除这段,坑了好久);找的代码

        if (!-e $request_filename)
{
rewrite ^\/([^\.]*)$ /index.php/$1 last;
break;
}
location ~ \.php
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;#注意这里有的系统是fcgi.conf 实际就是nginx下的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中
}

最终配置结果

server
{
listen 80 ;
#listen [::]:80 default_server ipv6only=on;
server_name xxxx.com ;
index index.html index.htm index.php;
root /home/wwwroot/thinkcmf; #error_page 404 /404.html; if (!-e $request_filename)
{
rewrite ^\/([^\.]*)$ /index.php/$1 last;
break;
}
location ~ \.php
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;#注意这里有的系统是fcgi.conf 实际就是nginx下的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中
}
access_log /home/wwwlogs/access.log access;
}

重启nginx,网站正常。

对了,重要参考网址:https://my.oschina.net/longxuu/blog/190223

nginx 下开启pathinfo模式的更多相关文章

  1. nginx下开启pathinfo模式

    第一种方式是通过重写url来实现pathinfo模式: location / { if (!-e $request_filename){ rewrite ^/(.*)$ /index.php?s=/$ ...

  2. codeigniter在nginx 下支持pathinfo和去除index.php的方法

    as今天准备把网站搬迁到nginx上发现codeigniter框架在nginx上不能使用,后来发现是nginx不支持pathinfo,下面介绍怎么在nginx下开启pathinfo 开始pathinf ...

  3. nginx 隐藏 index.php 和 开启 pathinfo 模式的配置

    nginx 通过 location 的规则匹配将 php 转发给 php-fpm 处理后获取结果然后返回给客户端,转发模式可以通过 unix sock 或 tcp socket 方式.百度了好多文章我 ...

  4. shopnc B2B2C商城 Nginx下开启伪静态

    B2B2C商城 Nginx下开启伪静态,伪静态开启后,对系统的SEO极为有利,可以最大限度让商城页面被搜索引擎抓取,但在实际安装中,很多客户在这块都会遇到各种各样的问题. 1. 编辑商城配置文件(da ...

  5. php开启pathinfo 模式

    pathinfo 模式 需要 php.ini 开启下面这个参数 cgi.fix_pathinfo=1 path_info模式:http://www.xxx.com/index.php/模块/方法   ...

  6. 关于NGINX下开启PHP-FPM 输出PHP错误日志的设置(已解决)

    最近在本地搭建的LNMP的开发环境.为了开发的时候不影响前端的正常开发就屏蔽的PHP里面php.ini中的一些错误提示.但是这样一来,就影响到了后端开发的一些问题比如不能及时调试开发中的一些问题. n ...

  7. Nginx下实现pathinfo及ThinkPHP的URL Rewrite模式支持

    打开Nginx的配置文件 /usr/local/nginx/conf/nginx.conf 一般是在这个路径,根据你的安装路径可能有所变化.如果你配置了vhost,而且只需要你这一个vhost支持pa ...

  8. nginx中配置pathinfo模式示例

    要想让nginx支持PATH_INFO,首先需要知道什么是pathinfo,为什么要用pathinfo? pathinfo不是nginx的功能,pathinfo是php的功能. php中有两个path ...

  9. 在 Sublime Text 2 下开启 Vim 模式

    緣由 由於在 Sublime Text 2 下操作時會想起 Vim 下的鍵盤操作.一時興起在網絡上找了下,發現 Sublime Text 2 是支持類似 Vim 的鍵盤操作的.在此分享下配置過程. 打 ...

随机推荐

  1. neo4j算法(1)-介绍

    neo4j为图数据库,其中涉及的也就为图算法,图算法被用来度量图形,节点及关系. 在neo4j中,通过call algo.list() 可查看neo4j中的算法列表. 在neo4j官方文档中,主要记录 ...

  2. 大半宿,封装了一个MP3播放器的类,写了个简陋的播放器

    用 winmm.lib 写的 封装不是很好,而且没有优化,效率可能有问题,但是现在几乎没有什么大问题 我用我封装的类,写了一个小播放器,界面上的所有功能都实现了,包括双击列表中的文件名,直接播放文件 ...

  3. Hibernate的多对多映射

    一.创建Java工程,新建Lib文件夹,加入Hibernate和数据库(如MySql.Oracle.SqlServer等)的Jar包,创建 hibernate.cfg.xml 文件,并配置,配置项如下 ...

  4. 微软云数据库SQL Azure

  5. 警告(alert 消息对话框) 如果你不点击“确定”,就不能对网页做任何操作,这个小窗口就是使用alert实现的

    警告(alert 消息对话框) 我们在访问网站的时候,有时会突然弹出一个小窗口,上面写着一段提示信息文字.如果你不点击"确定",就不能对网页做任何操作,这个小窗口就是使用alert ...

  6. 看 《android权威编程指南》 的笔记

    Android 编译工具 确保ant已安装并正常运行,android sdk的tools/和platform-tools目录包含在可执行文件的搜索路径中 切换到项目目录并执行以下命令: android ...

  7. 18多校8th

    a-容斥原理(带限制的不定方程) #include<bits/stdc++.h> using namespace std; #define mod 998244353 #define ll ...

  8. Mac OS下使用ll等命令

    1. 进入用户bash_profile文件 vi ~/.bash_profile 2. 添加如下命令 alias ll='ls -l' alias la='ls -A' alias l='ls -CF ...

  9. CPU中的主要的寄存器

    寄存器 名为寄存器的存储电路. 8种16位寄存器 AX accumulator 累加寄存器 CX counter 计数寄存器 DX data 数据寄存器 BX base 基址寄存器 SP stack ...

  10. C#多线程实现方法——线程池(Thread Pool)

    ThreadPool使用 同步机制   ThreadPool使用 需要定义waitcallback委托形式如 public delegate void WaitCallback(object stat ...