Nginx 开启 PATHINFO
在这之前, 笔者也到搜索引擎上看了几篇关于 Nginx 设置 PATHINFO 的要领, 感受有点乱, 乱的原因主要是由于 Nginx 没有给以像 Apache 那样一个参数即可开启 PATHINFO 的精采支持, 因此呈现了各类 Nginx 下开启 PATHINFO 的解法。
序列号 | CPU | RAM | HDD | 带宽 | 售价(美元) | 免费试用 |
---|---|---|---|---|---|---|
香港服务器1 | E5-2620 | 32G | 1T HDD | 50M/无限流量 | $196.00 | 立即申请 |
香港服务器2 | E5-2650 | 32G | 1T HDD | 50M/无限流量 | $256.00 | 立即申请 |
香港服务器3 | E5-2680 | 32G | 1T HDD | 50M/无限流量 | $316.00 | 立即申请 |
香港服务器4 | E5-2690 | 32G | 1T HDD | 50M/无限流量 | $336.00 | 立即申请 |
香港服务器5 | E5-2697 | 32G | 1T HDD | 50M/无限流量 | $376.00 | 立即申请 |
香港服务器6 | E5-2620*2 | 32G | 1T HDD | 50M/无限流量 | $376.00 | 立即申请 |
香港服务器7 | E5-2650*2 | 32G | 1T HDD | 50M/无限流量 | $436.00 | 立即申请 |
香港服务器8 | E5-2680*2 | 32G | 1T HDD | 50M/无限流量 | $476.00 | 立即申请 |
香港服务器9 | E5-2690*2 | 32G | 1T HDD | 50M/无限流量 | $556.00 | 立即申请 |
香港服务器10 | E5-2697*2 | 32G | 1T HDD | 50M/无限流量 | $596.00 | 立即申请 |
香港服务器11 | E5-2680v4*2 | 32G | 1T HDD | 50M/无限流量 | $696.00 | 立即申请 |
香港服务器12 | E5-2698v4*2 | 32G | 1T HDD | 50M/无限流量 | $796.00 | 立即申请 |
这里提供的是参阅 Nginx 官方文档并团结实测可用后的 PATHINFO 的方案。去除不必需的注释, Nginx 开启 PATHINFO 的 server 部门设置如下:
server{listen80;server_namelocalhost;location/{rootD:/Projects/Demo/thinkphp;#你的TP框架index.php地址目次,记得用/支解路径indexindex.phpindex.htmlindex.htm;}#...#passthePHPscriptstoFastCGIserverlisteningon127.0.0.1:9000#location~^(.+.php)(.*)${rootD:/Projects/Demo/thinkphp;#你的TP框架index.php地址目次,记得用/支解路径fastcgi_split_path_info^(.+.php)(.*)$;fastcgi_paramPATH_INFO$fastcgi_path_info;fastcgi_pass127.0.0.1:9000;fastcgi_indexindex.php;fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;includefastcgi_params;}}
这种做法的道理是当请求的会见路径中含有 .php 时, 通过正则表达式结构出 PATHINFO, 并配置到 fastcgi 的参数 PATH_INFO 中。
代码中匹配 PATH_INFO 的正则表达式来历于 Nginx 官方文档中的写法。拜见: http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_split_path_info
PATHINFO 模式是 ThinkPHP 默认的 URL 模式, 因此不需要修改 ThinkPHP 的默认设置即可利用 http://serverName/index.php/模块/节制器/操纵 方法会见。
URL REWRITE 模式
REWRITE 模式也称 URL重写, 可用于埋没 PATHINFO 模式路径中的 index.php, 开启 REWRITE 模式的 Nginx 设置为:
server{listen80;server_namelocalhost;location/{rootD:/Projects/Demo/thinkphp;#你的TP框架index.php地址目次,记得用/支解路径indexindex.phpindex.htmlindex.htm;try_files$uri$uri//index.php?s=$uri;#焦点}#...#passthePHPscriptstoFastCGIserverlisteningon127.0.0.1:9000#location~.php${rootD:/Projects/Demo/thinkphp;#你的TP框架index.php地址目次,记得用/支解路径fastcgi_pass127.0.0.1:9000;fastcgi_indexindex.php;fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;includefastcgi_params;}}
设置完成后修改 ThinkPHP 的 URL 模式为 REWRITE, 编辑设置文件 ThinkPHP/Conf/convention.php 中修改 URL_MODEL 参数值为 2 (REWRITE 模式)即可通过 http://serverName/模块/节制器/操纵 方法会见。
,