作者:Hily
原始链接:http://hily.me/blog/2010/04/nginx_path_info/
版
权声明:可以转载,转载时务必以超链接形式标明文章原
始出处
和作者信息
及版权声明
前一段时间为了 PATH_INFO 问题搞得郁闷,来回忆下原来的配置(以CodeIgniter框架的配置为例):
server {
listen 80;
server_name test.local;
location / {
root /www/test;
index index.html index.htm index.php;
rewrite ^/$ /index.php last;
rewrite ^/(?!index\.php|robots\.txt|images|js|styles)(.*)$ /index.php/$1 last;
}
location ~ \.php($|/) {
root /www/test;
set $script $uri;
set $path_info "";
if ($uri ~ "^(.+?\.php)(/.*)$") {
set $script $1;
set $path_info $2;
}
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_pass unix:/tmp/php-fpm.sock;
include fastcgi_params;
}
}
虽然可以实现 PATH_INFO 了,但是还是有缺陷,URL 中的中文不会被 urldecode。
好在,0.7.31 版本以上的 Nginx 新增了fastcgi_split_path_info 这个指令,现在配置起来清晰多了:
server {
listen 80;
server_name test.local;
location / {
root /www/test;
index index.html index.htm index.php;
rewrite ^/$ /index.php last;
rewrite ^/(?!index\.php|robots\.txt|images|js|styles)(.*)$ /index.php/$1 last;
}
location ~ ^(.+\.php)(.*)$ {
root /www/test;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_pass unix:/tmp/php-fpm.sock;
include fastcgi_params;
}
}
指令的具体帮助请参考官方WIKI:
http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_split_path_info
分享到:
相关推荐
- `error_log`: 定义错误日志文件的位置和级别,如`error_log /var/log/nginx/error.log info;`表示将错误日志记录在指定位置,并设置日志级别为info。 2. **events块** - `events`块用于配置Nginx如何处理连接...
local file_path = file_info["upload_field_name"]["path"] -- 这里可以添加文件大小验证、类型检查等逻辑 -- 存储文件元数据到数据库 local db = require "resty_mysql" local ok, err = db:new() -- 连接数据库...
Nginx配置支持ThinkPHP的PATH_INFO的知识点可以分为以下几个部分: 1. PATH_INFO的介绍: PATH_INFO是指在URL中,位于应用程序可执行脚本名称之后的路径信息。在许多PHP框架中,如ThinkPHP,PATH_INFO被用作一种...
为了让Nginx支持PATH_INFO,我们需要配置Nginx以正确设置$_SERVER['PATH_INFO']的值,并可能需要修改php.ini配置中的cgi.fix_pathinfo参数。 php.ini中的cgi.fix_pathinfo参数用于控制PHP处理PATH_INFO的方式。当...
但在Nginx中,PathInfo并不是默认开启的,需要用户进行手动设置。 Nginx开启PathInfo的过程主要有两个步骤:一是通过URL重写使Nginx能够解析URL中的PathInfo部分;二是对location块进行配置,以便Nginx能够将Path...
都会认为是对info.php的访问, 并会设置PATH_INFO为dummy 而对于Nginx下, 是不支持PATH INFO的, 也就是它不会默认设置PATH_INFO. 而因为默认的配置文件对PHP的支持只是很基础的, 所以对于默认配置来说对于上面的访问...
nginx默认不支持pathinfo,最近在调用而支付宝的回调接口 只能使用这种模式
pathinfo是伪静态的一种,对于用过thinkphp的朋友们来说应该都不陌生,下面这篇文章主要给大家介绍了关于Nginx如何实现pathinfo模式的方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
标题中的“让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享”是指在使用Nginx作为Web服务器时,如何配置Nginx以适应ThinkPHP框架的URL重写规则和PATHINFO模式。ThinkPHP是一款流行的PHP开发框架,它的URL重写功能...
最近一个项目中使用了ThinkPHP做为开发框架,URL上我们使用了PATHINFO模式,但是Nginx默认是不支持PATHINFO的,需要进行手动配置才可以,于是我们按照了以下方法进行了Nginx的PATHINFO支持配置:修改nginx.conf,...
以下是如何配置Nginx以正确处理PathInfo请求的详细步骤。 首先,我们需要理解Nginx的正则表达式匹配规则。在`location`指令中,我们通常会看到`~ \.php$`这样的设置来匹配所有的.php文件。然而,为了支持PathInfo,...
nginx+php,让nginx支持PHP的PATHINFO路由模式_亲测成功.zip apache+php支持PATHINFO路由模式非常容易,但是nginx对pathinfo可不支持,需要你自己配置正则路径.看看我怎么配的
<logpath>D:\work\nginx_13_Violet\logs</logpath> <sizeThreshold>10240 <keepFiles>8 <executable>D:\work\nginx_13_Violet\nginx_basic.exe <startarguments>-p D:\work\nginx_13_Violet ...
在nginx.conf中,通过include指令引入pathinfo.conf,这样Nginx服务器在处理请求时会遵循该文件中的配置。 3. 在location块中配置具体的PHP处理规则。当请求的URI包含PHP后缀时,Nginx会将其传递给PHP处理器(通常...
以下是配置Nginx PathInfo模式的详细步骤和相关知识点: 1. **理解PathInfo**: PathInfo是一种URL格式,用于在请求中携带额外的路径信息。例如,`example.com/index.php/User/app`,这里的`/User/app`就是Path...
本文将详细讲解如何在Nginx中配置Pathinfo模式。 首先,我们要明白Pathinfo模式的作用。在PHP应用中,Pathinfo模式允许URL中的额外路径信息(如`/index`)传递给PHP解释器,这样PHP脚本就能解析这部分信息并执行...