thinkphp nginx php-fpm url rewrite 导致 404 错误

thinkphp nginx php-fpm url rewrite 导致 404 错误

之前thinkphp的系统部署在apache上,考虑到在并发性能nginx比apache强悍得多,所以在centos上以 nginx+php-fpm模式重新部署了thinkphp系统,结果发现诸如

1

/index.php/home/user/verify

此类的url nginx会报404错误,但是改成

1

/index.php?s=/home/user/verify

之后却能够访问,这说明前一种url nginx不支持,那为啥会不支持呢?要解决这个问题首先要明白thinkPHP的几种url模式。

thinkPHP URL模式

1. pathinfo 模式

1

/index.php/home/user/verify

这种url格式,需要服务器支持pathinfo才行

2. rewrite 模式

1

/?s=/home/user/verify

去掉index.php的伪静态模式

3. 兼容模式

普通的模式加s=/参数/或者m=model&a=action

thinkPHP URL模式配置

在文件 /Application/Common/conf.php 中修改 URL_MODEL 的值

1

‘URL_MODEL‘ => 3

nginx pathinfo模式配置

nginx默认是不支持pathinfo模式的,需要手动添加rewrite规则来支持

1. 打开/nginx/conf/vhost目录下的站点配置文件。

2. 在server节点中增加 如下location规则:

1

2

3

4

5

6

7

8

9

10

11

#以index.php开头的uri

location ~ ^/index.php(.*)

{

#如果文件或者路径不存在

if (!-e $request_filename)

{

#将pathinfo模式的uri重写成普通模式

rewrite  ^/index.php(.*)$  /index.php?s=$1  last;

break;

}

}

3. 重新载入nginx配置信息

1

service nginx reload

Done !

时间: 2024-12-15 01:36:32

thinkphp nginx php-fpm url rewrite 导致 404 错误的相关文章

Nginx下支持ThinkPHP的Pathinfo和URl Rewrite模式

Nginx下支持ThinkPHP的Pathinfo和URl Rewrite模式 BY 孙 权 · 2014年8月6日 我的环境 系统 : Ubuntu12.04 x86_64 环境 : Nginx1.1.19+PHP5.3.10+Mongo2.6.3 由于公司要用Nginx+Mongo+PHP,所以我要把刚刚配置好的LAMP推翻,然后重新安装LNMP.软件安装就不在这里介绍了,如果有需要,可以看这里. 如何安装Nginx. 下面介绍如何使Nginx支持ThinkPHP的Pathinfo和URL

【linux】nginx 在权限不够时会报404错误

在机器上进行root,mxx的帐号切换,部分文件所有者和群组都是root账户导致mxx帐号下启动nginx后访问包如下错误 了解得知是可能跟 路径或者权限 有关系,或者SCRIPT_FILENAME 变量没有被正确的设置(这在nginx是最常见的原因) 1)如果html也出现404错误,那么就是document root 设置的有问题 2)检查脚本文件的权限, 可能PHP或者web server不能读取它 3)SCRIPT_FILENAME设置错误 解决方法: 因为环境根本没动过,就拷贝过,所以

Apache和Nginx设置伪静态(URL Rewrite)的方法

原文地址:http://bbs.qcloud.com/forum.php?mod=viewthread&tid=3545 apache/nginx伪静态在线转换:http://www.anilcetin.com/convert-apache-htaccess-to-nginx/ Apache 2.x 1.首先我们要确认Apache已经正确加载了mod_rewrite模块      检查httpd.conf中是否有LoadModule Rewrite_module modules/mod_Rewr

centOS7.4 thinkPHP nginx 支持pathinfo和rewrite

server { listen 80; server_name www.demo.com mayifanx.com; root /data/www/demo; index index.php index.html index.htm; #红色部分支持rewrite location / { if (!-e $request_filename){ rewrite ^(.*)$ /index.php?s=$1 last; } } location ~ \.php { fastcgi_pass 127

Linux下使用Nginx代理访问json文件包404错误

在网上看了很多,都说是IIS的问题,关键是使用servlet就可以正常访问,使用Nginx就不行,最后发现是其他问题,解决方案如下: 1.确认配置的路径是否正确,Nginx代理的路径和你访问的路径. 2.在Nginx的nginx.conf中找到对应的server,然后找到访问静态文件的location,加入json,如下: 希望可以帮到你! 原文地址:https://www.cnblogs.com/tygtyg/p/9304131.html

【414 error】nginx GET请求过长导致414错误

server{ ... } 在上面一段配置中添加如下两行 client_header_buffer_size 5120k; large_client_header_buffers 16 5120k; 并重启nginx sudo pkill nginx sudo nginx -c /path_to_your_nginx.conf 原文地址:https://www.cnblogs.com/zealousness/p/11382982.html

Nginx 上传大文件时报404错误

处理方法:在配置文件中更改以下2个参数 client_max_body_size 10M; client_body_buffer_size 10M; 原文地址:http://blog.51cto.com/linux10000/2351248

nginx自定义404错误页面

在Nginx环境下配置自定义的404错误页面转向,避免给用户展示生硬.不友好的错误信息.可以给出如下提示:很抱歉,您访问的页面不存在或已被删除. 注意事项: 一.修改nginx.conf之前做好备份,避免出现问题. 二.定义页面时注意路径是否正确. ①首先创建一个404错误时显示的页面,如放在你的网站根目录下的404.html.(内容随便) ②在nginx.conf中的http区域加入fastcgi_intercept_errors on: http { ... fastcgi_intercep

IIS7.0设置404错误页,返回500状态码

一般在II6下,设置自定义404错误页时,只需要在错误页中选择自定义的页面,做自己的404页面即可.但是在IIS7.0及以上时,设置完404错误页后,会发现状态码返回的是500,并且可能会引起页面乱码.查找资料,发现好多资料写的不够详细,不能完美解决问题.特将我的经验分享一下,希望能帮助到大家. 经过试验,发现有两种方案可用,各有利弊,我使用的是第二种方案. 方案1: 1. 在IIS中,找到对应站点,打开“功能视图”-“IIS栏”-“错误页”: 2. 双击“404”,打开“编辑自定义错误页”对话