欢迎来到云服务器

服务器租用

Nginx 下 ThinkPHP URL 的 PATHINFO 与 REWRITE

Nginx 开启 PATHINFO

在这之前, 笔者也到搜索引擎上看了几篇关于 Nginx 设置 PATHINFO 的要领, 感受有点乱, 乱的原因主要是由于 Nginx 没有给以像 Apache 那样一个参数即可开启 PATHINFO 的精采支持, 因此呈现了各类 Nginx 下开启 PATHINFO 的解法。

这里提供的是参阅 Nginx 官方文档并团结实测可用后的 PATHINFO 的方案。去除不必需的注释, Nginx 开启 PATHINFO 的 server 部门设置如下:

server {
    listen       80;
    server_name  localhost;
    location / {
        root   D:/Projects/Demo/thinkphp;   # 你的 TP 框架 index.php 地址目次, 记得用 / 支解路径
        index index.php index.html index.htm;
    }
    # ...
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ ^(.+.php)(.*)$ {
        root   D:/Projects/Demo/thinkphp;   # 你的 TP 框架 index.php 地址目次, 记得用 / 支解路径
        fastcgi_split_path_info ^(.+.php)(.*)$;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_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 {
    listen       80;
    server_name  localhost;
    location / {
        root   D:/Projects/Demo/thinkphp;   # 你的 TP 框架 index.php 地址目次, 记得用 / 支解路径
        index index.php index.html index.htm;
        try_files $uri $uri/ /index.php?s=$uri; # 焦点
    }
    # ...
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ .php$ {
        root   D:/Projects/Demo/thinkphp;   # 你的 TP 框架 index.php 地址目次, 记得用 / 支解路径
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

设置完成后修改 ThinkPHP 的 URL 模式为 REWRITE, 编辑设置文件 ThinkPHP/Conf/convention.php 中修改 URL_MODEL 参数值为 2 (REWRITE 模式)即可通过 http://serverName/模块/节制器/操纵 方法会见。

腾讯云代理

Copyright © 2003-2021 MFISP.COM. 国外vps服务器租用 梦飞云服务器租用 版权所有 粤ICP备11019662号