前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >nginx配置支持pathinfo模式的url访问(原创)

nginx配置支持pathinfo模式的url访问(原创)

作者头像
后端技术探索
发布于 2018-08-09 08:49:09
发布于 2018-08-09 08:49:09
1.9K00
代码可运行
举报
文章被收录于专栏:后端技术探索后端技术探索
运行总次数:0
代码可运行

首先,什么是pathinfo模式呢?

pathinfo是伪静态的一种,我们先解释一下伪静态的概念,伪静态页面是静态URL与动态URL互通的一个桥梁,它是指动态网址通过URL重写的手段去掉其动态参数,使URL静态化,但在实际的网页目录中并没有重写URL。简单来说,伪静态URL就是通过服务器转换伪装文件名或地址,使该页面类似于静态页面,但服务器上没有独立存在的文件,其本质还是动态页面。

例如:一个动态网址http://www.cxzaixian.com/index.php?m=topic&a=detail&tid=82 转为 伪静态模式后为http://www.cxzaixian.com/index.php/topic/detail/tid/82.html。

apache服务器本身是支持pathinfo的,通过简单修改几项配置即可。当配置支持pathinfo后,在php应用程序中,通过_SERVER['PATH_INFO']变量获取pathinfo值为/topic/detail/tid/82.html。 我们就可以很容易通过php逻辑代码来解析出controller文件、action方法、以及剩余的动态参数,进而就可以返回正确的网页响应。

但是我们要说的nginx服务器默认是不支持pathinfo模式访问。实质上就是nginx不会去设置环境变量PATH_INFO 的值,导致php应用程序不能通过_SERVER['PAHT_INFO']来获取path_info, 也就不能解析出对应的动态参数。

好了,终于到本文的正题了,nginx支持pathinfo的配置如下:

1. 找到ngingx的配置文件nginx.conf

在server里的location项,

修改前为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  location ~ \.php$ { 注:去掉本行的$ 字符            root           html;            fastcgi_pass   127.0.0.1:9000;            fastcgi_index  index.php;            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;            include        fastcgi_params;            注:下面加上一些配置语句  }  

修改后为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  location ~ \.php {            root           html;            fastcgi_pass   127.0.0.1:9000;            fastcgi_index  index.php;            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;            include        fastcgi_params;            #定义变量 $path_info ,用于存放pathinfo信息            set $path_info "";            #定义变量 $real_script_name,用于存放真实地址            set $real_script_name $fastcgi_script_name;            #如果地址与引号内的正则表达式匹配            if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {                    #将文件地址赋值给变量 $real_script_name                    set $real_script_name $1;                    #将文件地址后的参数赋值给变量 $path_info                    set $path_info $2;            }            #配置fastcgi的一些参数            fastcgi_param SCRIPT_NAME $real_script_name;            fastcgi_param PATH_INFO $path_info;    }

2.重启nginx和phpcgi

其他参考:

thinkphp 框架比较好了支持了pathinfo模式访问,可以去深入了解一下它是怎么支持pathinfo格式的。

www.cxzaixian.com就是基于thinkphp框架,而且全站使用的都是pathinfo访问

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 nginx 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
原 nginx的pathinfo配置
前言:         首先,什么是pathinfo模式呢?         pathinfo是伪静态的一种,我们先解释一下伪静态的概念,伪静态页面是静态URL与动态URL互通的一个桥梁,它是指动态网址通过URL重写的手段去掉其动态参数,使URL静态化,但在实际的网页目录中并没有重写URL。简单来说,伪静态URL就是通过服务器转换伪装文件名或地址,使该页面类似于静态页面,但服务器上没有独立存在的文件,其本质还是动态页面。        例如:一个动态网址http://www.cxzaixian.com/in
霡霂
2018/06/04
1.1K0
tp5 url 线上访问 在nginx 上 出现404错误,解决办法(1.80nginx 配置 pathInfo)
对于ThinkPHP的URL访问路劲如:http://域名/index.php/Index/BlogTest/read,原先的Nginx的是不支持的pathinfo路劲的,导致你在thinkPHP5上面测试的时候,输入相应的URL也不会提示模块名,控制器名或者方法名错误,而是出现一个404找不到的错误,那是因为Nginx无法解析这样的链接,下面讲讲如何配置:
全栈程序员站长
2022/07/07
1.3K0
tp5 url 线上访问 在nginx 上 出现404错误,解决办法(1.80nginx 配置 pathInfo)
Nginx配置pathInfo
server { listen 80; server_name blog.phpfs.com; access_log /data/logs/www/nginx/blog_access.log; error_log /data/logs/www/nginx/blog_error.log; root /data/www/blog/public; location / { if (!-e
苦咖啡
2018/04/28
9810
详解如何在url中去掉index.php
THINKPHP官方论坛和网络上很多NGINX配置教程不是太完善的。我一直比较喜欢使用lnmp.org配置服务器环境。所以本文将介绍 LNMP 配置NGINX 支持THINKPHP PATHINFO模式 。
PM吃瓜
2019/08/13
2.4K0
PATH_INFO模式是什么?如何解析?
我们可以使用PATH_INFO来代替Rewrite来实现伪静态页面, 另外不少PHP框架也使用PATH_INFO来作为路由载体
PHP开发工程师
2021/04/29
1.5K0
PATH_INFO模式是什么?如何解析?
LNMP 1.x版本 pathinfo设置
更新测试时间2016.03.08,lnmp1.3-beta最新版+typecho开发最新版。 只要修改vhost下面的配置文件 enable-php.conf 为 enable-php-pathinfo.conf 再引用 typecho.conf 伪静态文件,完美解决。 不用下面的废劲方法了。 ===========分隔线============ 现在使用lnmp1.x版本,搭配typecho登陆后台,会出现404错误。小夜就不深究原因了,这里只说解决办法。 1.enable-php.conf 文件,
用户1700948
2018/05/16
8860
让nginx支持pathinfo
nginx的高性能优势明显,自己又很喜欢pathinfo类型的url。 apache下mod_rewirte有很好的实现,nginx就捉鸡了。 网上有一些中文的文章教你怎么配置nginx来支持pathinfo(当然很多是互相抄袭的) 英文的相对少很多
horsley
2022/08/16
4940
续:让nginx支持pathinfo
原文的配置在我本机(Win,Nginx1.2.4)还算可以,但是有一个bug,就是如果url里面包含trailing slash(最后的斜杠/)的话,PATH_INFO捕捉到的值有误,为ATH_INFO,同时$_SERVER数组里面多了一个键名为ORIG_PATH_INFO的元素其值为我们期望的path_info,非常怪异,一开始以为是$path_info变量未定义的问题,$p不见了,剩下ath_info,后面改过变量名之后还是不行,证明不是这个问题。
horsley
2022/08/16
6080
拥抱https之Nginx配置详解
了解之后发现我申请的域名是单域名, 如 baidu.com和ssl.baidu.com认为是两个域名,只是他们的主域名是baidu.com。因此我的子域名也需要在申请个ssl。填入域名地址。等待一会后再安装到我的又拍云上。
西柚dzh
2022/06/09
5690
拥抱https之Nginx配置详解
Nginx兼容框架的pathinfo模式与URL重写
几乎所有的框架(ThinkPHP,Zend Framework,CI,Yii,laravel等)都会使用URL重写或者pathinfo模式,使URL看起来更美观,比如可以隐藏掉入口文件,并且有利于搜索引擎优化,其实让Nginx支持pathinfo或者重写也不难,首先在php.ini中设置cgi.fix_pathinfo=1
PM吃瓜
2019/08/13
1.8K0
Nginx结构全解析(121)
2.使用nginx正则解析,手动用if命令将访问路径解析,然后作为PATH_INFO传递给php页面。
陈不成i
2021/05/17
3140
Laravel 上传到lnmp环境不能用 您了解pathinfo吗
在nginx下是不支持pathinfo的,但是apache支持pathinfo。 pathinfo是什么? 首先我们在nginx的html目录下新键1.php文件,打印$_SERVER
切图仔
2022/09/08
4170
Laravel 上传到lnmp环境不能用 您了解pathinfo吗
PhalconCMS 1.0发布啦~~
一直都计划着用phalcon来开发一套博客系统 。一来是替换我这个博客站原来的程序,二来也是想为phalcon的开源事业做点贡献。许多接触phalcon的玩家,因为中文资料少、入门门槛高,以及可供参考参照学习的开源项目少,直接从入门到放弃,去学习其他框架了。希望这套博客系统,能为大家在学习phalcon的路上,提供些许帮助~ 这套博客系统的名字叫PhalconCMS。我也没想出什么特别好听且有寓意的名字,所以暂且就叫PhalconCMS吧。目前是1.0版本,已经在我这个博客站里进行了部署。这个版本只实现了博
Marser
2018/06/25
3920
typecho设置伪静态规则
记得当时我自己手动搭建好LNMP环境,安装上typecho之后,满心欢喜的打开网站首页,却发现除了首页其他的页面都是打不开的,全部显示“403”。当时还困饶了我大半天(后来才知道是没有正确设置伪静态的原因),一度以为是环境没搭好,重置服务器再搭环境这么试了好几次,还是一样的错误。后来,直到在其官方文档里看到服务器设置伪静态的方法,就尝试了一下,果然有用。(不过很奇怪的是在官方文档中是找不到这个文档页面的,当时还是在搜索引擎中才找到的)
知识分子没文化
2023/07/01
6470
typecho设置伪静态规则
NGINX.conf配置文件支持pathinfo
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112491.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/08
4630
视频直播系统开发中的数据库创建方案
我们之前为大家介绍过直播平台搭建中的服务器环境配置流程。我们今天介绍下视频直播平台开发搭建中数据库该如何创建?
q3557873521
2019/02/25
1.7K0
typecho安装过程遇到的问题以及解决办法
typecho官方安装文档:http://docs.typecho.org/install typecho常见问题汇总:http://docs.typecho.org/faq 安装环境: lnmp,其中linux为centos ,php版本为php7.0 问题1:遇到需要手动创建common.inc.php文件后,无法生效? 操作过程:拷贝之后直接用vim打开并shift+insert粘贴进去 正确姿势:按住i进入插入模式之后再shift+insert粘贴 问题2:数据库连接失败? 如果使用的ph
槽痞
2020/06/23
1.8K0
Linux 下 Nginx + PHP 环境的配置
本来想简单地写一写,结果发现越写越长,折腾了将近一个月,整出这篇 10000 多字的超长笔记。。。
zgq354
2019/11/24
3.7K1
[nginx]nginx的一个奇葩问题 500 Internal Server Error phpstudy2018
[nginx]nginx的一个奇葩问题 500 Internal Server Error
landv
2019/08/20
1.8K0
nginx服务器配置虚拟主机
对于虚拟主机的配置可以在nginx.conf里面配置或者vhosts.conf下,由于vhost.conf便于管理我们在这个文件夹下进行配置虚拟主机
十月梦想
2018/08/29
3.9K0
相关推荐
原 nginx的pathinfo配置
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档