当我们在本地把php项目写完之后,哟啊发布到线上,本地我们一般使用的是apache,而服务器使用的却是nginx,当我们吧php项目上传到线上之后,访问会出现404错误,是因为本地的apache规则不适合线上的nginx,这时我们需要找到nginx的vhost配置文件,并打开编辑它,在server里加上如下代码:
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
}
}
下面是编辑后的内容
server
{
listen 8007;
server_name 94.191.42.70;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/bg.com/public;
```隐藏入口文件```
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
}
}
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#SSL-END
#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
error_page 404 /404.html;
error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP引用配置,可以注释或修改
include enable-php-56.conf;
#PHP-INFO-END
#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
include /www/server/panel/vhost/rewrite/bg.com.conf;
#REWRITE-END
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log off;
access_log off;
}
location ~ .*\.(js|css)?$
{
expires 12h;
error_log off;
access_log off;
}
access_log /www/wwwlogs/bg.com.log;
error_log /www/wwwlogs/bg.com.error.log;
}
然后重载一下配置文件,重启服务器,当然如果使用宝塔添加的站点,这时是没有vhost.conf文件的,它会在 ````www/server/panel``` 文件夹下有一个 vhost 文件夹,所有添加的站点的 vhost.conf 文件都在这里,站点名称就是文件夹名称,直接编辑它,加入如上面的代码片段,然后重载配置文件,重启服务器就ok了。