ThinkPHP5在nginx服务器上部署,相信很多人都采坑了,其实我也不例外。
今天,我就说说在nginx服务器上遇到的问题
404出错和pathinfo的问题
在网站上找了很多资料,都是长篇大论的,而且很多都无法解决404这错误的提示
注: 在网站上很多都是更改nginx.conf【/usr/local/nginx/conf/nginx.conf】
这个文件,我个人的习惯是根据当前站点进行配置;例如在:/usr/local/nginx/conf/vhost
目录中添加你自己站点的配置文件,如:test.com.conf
;到此,还是不能加载test.com.conf
这个文件,最重要的一部要在/usr/local/nginx/conf/nginx.conf
这个文件添加include vhost/*.conf
;意思就是:把vhost目录中下xxx.conf的文件自动加载………………
把/usr/local/nginx/conf/nginx.conf
这个文件中代码复制到test.com.conf
这个文件中,代码如下:
server
{
listen 80 default_server;
#listen [::]:80 default_server ipv6only=on;
server_name _; # 这个位置就是填写你的IP或者域名;如:test.com
index index.html index.htm index.php;
root /home/wwwroot/default; # 这个位置就是您的站点目录
#error_page 404 /404.html;
# Deny access to PHP files in specific directory
#location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
include enable-php.conf; ## 看到这个位置了吧,很重要,下面再说*^_^*
location /nginx_status
{
stub_status on;
access_log off;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /.well-known {
allow all;
}
location ~ /\.
{
deny all;
}
access_log /home/wwwlogs/access.log;
}
然后重启lnmp restart 命令,自己配置的站点配置完成了。
然鹅,ThinkPHP5项目默认的情况下是访问 test.com 可以正常显示,如果用test.com/index.php/index/index/index这样进行访问,则出现404错误提示【哪怕在thinkphp5中的config.php的配置文件中开启debug模式,还是提示404错误】
解决:404错误和pathinfo模式
上述代码中有一家话: 看到这个位置了吧,很重要,下面再说_**
include enable-php.conf;
更改为:
include enable-php-pathinfo.conf; 或者 绝对的路径:include /usr/local/nginx/conf/enable-php-pathinfo.conf;
隐藏index.php
在自己站点配置文件中如:test.com.conf
文件中添加如下代码即可:
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
至此,重启lnmp restart命令即可,根据自己的域名或者IP进行访问就可以看到你想要的效果。