专栏首页后端技术探索nginx配置支持pathinfo模式的url访问(原创)

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

首先,什么是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项,

修改前为:

  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;            注:下面加上一些配置语句  }  

修改后为:

  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访问

本文分享自微信公众号 - nginx(nginx-study),作者:海中威

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-04-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

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

    pathinfo是伪静态的一种,我们先解释一下伪静态的概念,伪静态页面是静态URL与动态URL互通的一个桥梁,它是指动态网址通过URL重写的手段去掉...

    后端技术探索
  • 泄露公司源代码算不算犯罪,会坐牢吗

    B站源代码泄露事件是今天程序猿届的热点事件,我们不应该只是作为吃瓜群众看热闹,而是要以此为戒,以避免自己永远离开这个敲码职业,小编特意找到一个类似的真实案例,分...

    后端技术探索
  • 重磅!PHP之父Rasmus Lerdorf将出席2016中国php大会

    本猿获知PHP之父Rasmus Lerdorf将出席2016中国php大会并将发表技术分享后,内心激动不已,忍不住把这一消息分享给大家。

    后端技术探索
  • 原 nginx的pathinfo配置

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

    pathinfo是伪静态的一种,我们先解释一下伪静态的概念,伪静态页面是静态URL与动态URL互通的一个桥梁,它是指动态网址通过URL重写的手段去掉...

    后端技术探索
  • typecho安装过程遇到的问题以及解决办法

    槽痞
  • 智动大闯关题解

    按ctrl + u 查看源代码 可以看到有一个设置为白色的下一关的按钮,点击即可过关。

    学前端
  • 如何让你的海报在最短时间引起用户注意?

    现如今各种线上线下宣传推广随处可见,海报宣传单满天飞,每个人都在用尽最大努力做最好的推广宣传。那么就海报设计而言,如何在最短的时间内引起消费者的注意,引起读者进...

    用户5009027
  • 树莓派文件共享(Wiki)

    歪先生
  • 多比又添国际团队:原满币网联合创始人出任多比投资与战略合伙人

    近日,多比交易平台正式任命原Coinbene满币网交易所联合创始人辜宥森为多比投资与战略合伙人一职,并与以辜宥森为首的原Coinbene满币网国际运营团队签署合...

    dobitrade

扫码关注云+社区

领取腾讯云代金券