ThinkPHP->pathinfo模式(Linux下nginx的配置说明)

小伙伴在使用ThinkPHP搭建自己或者公司项目的时候,url模式设置成为兼容模式,也就是URL_MODEL的值为3的时候是不是也遇到过Lnmp的环境不支持pathinfo模式,当然了PHP+Nginx+Linux+Mysql的小伙伴呢,就不用看了!

下面就教大家怎么讲我们的各种云服务器下lnmp的环境支持pathinfo,说到这里是不是有的小伙伴可能不太明白pathinfo模式是什么,下面小编就先给大家上个个小例子:

www.xxx.com/index.php/Admin/Manager/Login

这样的url形式就是pathinfo的模式,这样的模式更加利于百度小蜘蛛的识别,也就是更加优于SEO。

下面就是重点步骤了,小伙伴们要注意了:

实际上差不多就是把nginx.conf拆解下来

1,把原有的nginx.conf文件备份(就是修改个名字),然后用下面的nginx.conf文件

user www www;

worker_processes 4;

error_log /home/wwwlogs/nginx_error.log crit;

pid /usr/local/nginx/logs/nginx.pid;

#Specifies the value for maximum file descriptors that can beopened by this process.

worker_rlimit_nofile 51200;

events

{

use epoll;

worker_connections 51200;

}

http {

include /usr/local/nginx/conf/mime.types;

default_type text/plain;

log_format main '$remote_addr - $remote_user [$time_local]"$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

access_log off;

sendfile on;

#tcp_nopush on;

#keepalive_timeout 0;

keepalive_timeout 65;

gzip on;

client_max_body_size 20m;

# Load config files from the /etc/nginx/conf.d directory

# The default server is in conf.d/default.conf

include /usr/local/nginx/conf/conf.d/*.conf;

include /usr/local/nginx/conf/vhost/*.conf;

}

2,配置pathinfo在/usr/local/nginx/conf下创建pathinfo.conf(如果已经存在请先备份然后修改)

fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;

fastcgi_pass unix:/tmp/php-cgi.sock;

fastcgi_param PATH_INFO $fastcgi_path_info;

fastcgi_param PATH_TRANSLATED$document_root$fastcgi_path_info;

fastcgi_param SCRIPT_NAME $fastcgi_script_name;

fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name;

fastcgi_param REQUEST_METHOD $request_method;

fastcgi_param QUERY_STRING $query_string;

fastcgi_param CONTENT_TYPE $content_type;

fastcgi_param CONTENT_LENGTH $content_length;

fastcgi_param REQUEST_URI $request_uri;

fastcgi_param DOCUMENT_URI $document_uri;

fastcgi_param DOCUMENT_ROOT $document_root;

fastcgi_param SERVER_PROTOCOL $server_protocol;

#fastcgi_param HTTPS $https if_not_empty;

fastcgi_param GATEWAY_INTERFACE CGI/1.1;

fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

fastcgi_param REMOTE_ADDR $remote_addr;

fastcgi_param REMOTE_PORT $remote_port;

fastcgi_param SERVER_ADDR $server_addr;

fastcgi_param SERVER_PORT $server_port;

fastcgi_param SERVER_NAME $server_name;

fastcgi_param REDIRECT_STATUS 200;

5,创建重定向 在/usr/local/nginx/conf下创建drect.conf

index index.php;

location ~ \.php$ {

include pathinfo.conf;

break;

}

autoindex on;

3,在/usr/local/nginx/conf里建vhost和conf.d两个文件夹子(mkdir vhost)

在conf.d里创建default.conf

server {

listen 80;# default_server;

server_name _;

charset utf-8;

#access_log logs/host.access.log main;

location / {

root /usr/share/nginx/html;

index index.html index.htm;

}

error_page 404 /404.html;

location = /404.html {

root /usr/share/nginx/html;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root /usr/share/nginx/html;

}

}

4,在vhost文件夹里创建站点配置信息(要以.conf结尾,每次添加新的站点儿时只需修改这里就可以)

server {

listen 80 default_server;

server_name nahan.cn;

//这个地址要和你的访问地址相对应

root /home/wwwroot/nahan.cn/;

index index.php;

if ($host = nahan.cn) {

rewrite ^/(.*)$ http://www.nahan.cn/$1 permanent;

}

autoindex on;

location / {

try_files $uri $uri/ /index.php$uri;

}

location ~ \.php {

include pathinfo.conf;

break;

}

}

5,进入 /usr/local/php/etc/php.ini 修改cgi.fix_pathinfo=1

新安装的lnmp如果php版本较低的话需要升级到5.4.27

6,所有文件修改完毕后请重启所有服务。命令:/root/lnmp restart 新版的重启命令为:lnmprestart

小伙伴按照上面的步骤一步一步的配置就可以了,希望这篇文章能帮助那些还在苦于linux下配置pathinfo的小伙伴

更多的精彩内容:

小伙伴们可以加群:

思梦PHP官方交流1群 466388300 思梦PHP官方交流2群 527490769

作者QQ:476319748

以上联系方式备注:微信公众平台思梦PHP

我们会定期给大家推送项目实战中非常有用的小技巧以及好的思维和小功能的案例!微信搜索思梦PHP就可以找到我们了

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

阅读源代码的姿势:以 go-restful 为例

一般初学者确定一个方向,比如web 后端、前端等,会选择一门编程语言深入下去,比如后端java、python、go等。通过项目不断练习编程语言和编程思维,知道如...

19430
来自专栏为数不多的Android技巧

Android插件化原理解析——ContentProvider的插件化

目前为止我们已经完成了Android四大组件中Activity,Service以及BroadcastReceiver的插件化,这几个组件各不相同,我们根据它们的...

23730
来自专栏一个爱瞎折腾的程序猿

Swashbuckle.AspNetCore3.0的二次封装与使用

之前写过一篇Swashbuckle.AspNetCore-v1.10 的使用,现在 Swashbuckle.AspNetCore 已经升级到 3.0 了,正好开...

15840
来自专栏Kubernetes

深入分析Kubernetes Scheduler的优先级队列

从1.9版本开始,Kubernetes实现了基于Pod优先级的调度队列,一方面提供高优先级的Pod优先被调度的能力,另一方面减轻抢占式调度时潜在的High Pr...

81870
来自专栏刘望舒

Android PMS的创建过程

PMS的创建过程分为两个部分进行讲解,分别是SyetemServer处理部分和PMS构造方法。其中SyetemServer处理部分和AMS和WMS的创建过程是类...

12730
来自专栏图像识别与深度学习

Bluetooth4_3运行流程(连接发射器SN00000009)

31960
来自专栏GopherCoder

『阅读源代码的姿势:以 go-restful 为例』

63830
来自专栏Android 研究

APK安装流程详解13——PMS中的新安装流程下(装载)

而在handleReturnCode()方法里面也是调用processPendingInstall(args, ret)方法,如下:

31520
来自专栏JackeyGao的博客

Django小技巧20: 使用多个settings模块

通常来说, 为了保持项目的配置简单,我们会避免使用多个配置文件。但理想很丰满, 现实是随着项目越来越大, settings.py可能也会变得相当复杂. 在那种情...

78810
来自专栏恰童鞋骚年

.NET Core微服务之基于Ocelot+IdentityServer实现统一验证与授权

  这里,假设我们有两个客户端(一个Web网站,一个移动App),他们要使用系统,需要通过API网关(这里API网关始终作为客户端的统一入口)先向Identit...

40440

扫码关注云+社区

领取腾讯云代金券