pathinfo(nginx配置pathinfo)

大家好,如果您还对pathinfo不太了解,没有关系,今天就由本站为大家分享pathinfo的知识,包括nginx配置pathinfo的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

随着互联网技术的不断发展,Web开发逐渐成为了众多程序员的兴趣所在。在Web开发过程中,我们经常需要处理URL的解析,而`pathinfo`则是其中一种常用的解析方法。本文将从浅入深地为大家解析`pathinfo`,帮助大家更好地掌握这个重要的概念。

什么是Pathinfo?

我们来明确一下什么是`pathinfo`。简单来说,`pathinfo`是一种获取URL路径信息的函数。它可以将URL路径拆分成目录、文件名、文件扩展名等信息,使得我们能够更加方便地对路径进行操作。

下面是一个简单的示例:

“`php

$url = “

如何配置nginx支持pathinfo模式

缘由

很久不使用apache了,渐渐对apache感到陌生,因为朋友有个ZendFramework框架从apache移到nginx下,需要pathinfo模式支持。

网上海搜

于是开始搜索nginx+pathinfo相关文章,一开以为很容易就会配置好。因为搜索后发现有大量文章介绍nginx开启pathinfo模式,感觉不是什么难事。但是经过几个小时下来,还是没有配置好。并且大量文章的内容都极其相似,基本都是转载的。

开始有点急了!因为一天过去了没有配好。

继续摸索

没办法,继续搜索。为了验证方便,我用a.com下载thinkphp框架搭了个环境。并且加了UserAction.class.php控制器类,在类里加了一个app方法并输出一行文字。

于是,我开始不断地改写nginx.conf文件重启nginx,不断的刷新a.com/index.php/User/app地址。结果要么是地址损坏提示、502、Access defind.

又是一天过去了,开始感觉有点彷徨。

最后坚持

按理说我感觉应该有nginx+thinkphp的先例,只是我没有搜索到答案而已。突然间感觉网上好迷茫,一个小小的问题寻求不到解答。今晚,又试着使用nginx thinkphp关键字搜索,我一下点到十多页以后,找到一处代码

location/{

if(!-e$request_filename){

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

break;

}

}

location~\.php{

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

include fcgi.conf;

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;

}

保存修改,重启nginx,刷新浏览器

意想不到的页面出现了

居然能访问了,终于松了一口气,实在太不容易了。

贴出nginx.conf代码

userwww www;

worker_processes 2;

worker_cpu_affinity 01 10;

error_log/data1/logs/nginx_error.logcrit;

pid/usr/local/webserver/nginx/nginx.pid;

worker_rlimit_nofile 65535;

events

{

use epoll;

worker_connections 65535;

}

http

{

include mime.types;

default_typeapplication/octet-stream;

server_names_hash_bucket_size 128;

client_header_buffer_size 32k;

large_client_header_buffers 4 32k;

client_max_body_size 8m;

sendfile on;

tcp_nopush on;

keepalive_timeout 60;

tcp_nodelay on;

fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

fastcgi_buffer_size 64k;

fastcgi_buffers 4 64k;

fastcgi_busy_buffers_size 128k;

fastcgi_temp_file_write_size 128k;

server

{

listen 80;

server_name a.com;

index index.php;

root/data0/htdocs/a.com/www;

location/{

if(!-e$request_filename){

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

break;

}

}

location~\.php{

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

include fcgi.conf;

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;

}

}

}

养成好习惯

1、虽然最终还是解决问题了,但平日要记录一下重要的东西,网络不是万灵

2、就算出现问题也要大概知道什么原因?能不能实现?如何实现?

3、常遇到的问题要反思,举一反三,思考。

nginx实现pathinfo有几种模式

鸟哥说的Rewrite重定向的方式指的是通过Nginx重定向,把PATH_INFO通过QueryString的方式传给PHP。例如,我们请求/user/1通过重定向规则,改为/index.php?path_info=/user/1。

这种方式需要PHP脚本内通过收集QueryString来分析PATH_INFO,需要做一定的兼容适配。

而鸟哥介绍的第二种,是让PHP去拆解PATH_INFO信息。例如,我们请求/index.php/user/1,PHP可以自动拆解脚本之后的路径,作为PATH_INFO,这里就是/user/1。

鸟哥介绍,由于PHP在拆解时可能出现一定的安全问题,所以还是不建议这种方法。

最后鸟哥介绍了另外一种方法,总体上来说还是从/index.php/user/1拆解出/user/1的方法,只不过这次拆解的过程是由Nginx来完成的,这种方法在接收请求的Nginx上来完成,相比较前两种在PHP中完成拆解的方法,这种方法由于可以使用的信息更多更直接,所以效果更好。

But,But,通常来说我们也不会以/index.php/user/1这种形式展示URL,而是希望隐藏程序的入口,也就是以/user/1来展示。所以说,这个过程我们仍然需要通过Nginx的Rewrite来完成隐藏程序入口到重定向到程序入口脚本的过程。通常在网络上看到的PHP+Nginx的隐藏入口配置,都是Rewrite配合最后一种拆解PATH_INFO方法来完成的。

所以说鸟哥的提法存在一定的问题,不能把第一种拆解PATH_INFO的方法单纯的与Nginx的Rewrite画等号。

如何开启服务器 thinkphp pathinfo的访问方式

这篇文章主要介绍了ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结,是ThinkPHP路由访问的基础知识,在ThinkPHP开发中非常重要,需要的朋友可以参考下

本文针对ThinkPHP中pathinfo的两种模式、四种路径访问模式和URL重写相关知识进行了总结归纳,分享给大家便于查询和借鉴。具体归纳如下:

1、pathinfo

访问模块IndexAction.class.php下边的test方法

等同于

2、四种路径访问模式

在config目录下边来做修改 URL_MODEL的值,分别表述如下:

值为0叫做普通模式。如:模块&a=方法

值为1叫做pathinfo模式。如:模块/方法

值为2叫做rewrite重写(伪静态)可以自己写相关的rewrite规则,也可以使用系统为我们提供的rewrite规则隐藏掉index.php,生成:模块/方法

值为3叫做兼容模式。当服务器上面不支持pathinfo模式的时候,但是你又在之前的路径访问格式上面,全部用的是pathinfo格式。那么它会提示你路径格式不正确。那么,你就可以用标号为3的兼容模式来处理。他的路径访问类似于模块/方法

3、URL重写步骤:

(1)、D:\wamp\wamp\Apache2\conf\httpd.conf开启apache服务器中的URL_REWRITE模块

(2)、AllowOverride None将 None改为 All

(3)、确保config.php配置文件中 URL_MODEL设置为 2

(4)、把.htaccess文件放到入口文件的同级目录下

采用URL重写利于seo,不过会加大服务器的性能消耗。

希望本文所述对大家ThinkPHP程序设计有所帮助。

关于pathinfo到此分享完毕,希望能帮助到您。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享