nginx伪静态 不显示PHP,nginx伪静态在本地测试没问题,上传至linux服务器出现不生效问题解决方法...

今天在上线一个新项目时,出现在本地测试好好的,但上线到服务器后nginx伪静态失效的问题。

在网上查询了很多资料都没有得到解决。

下面给大家展示一下原始伪静态规则代码:

rewrite ^/(verifyimg)(\.png)$ index.php?s=$1&%1 last;

rewrite ^/(log|reg|login|loginfunc|checkToken|index)$ index.php?s=$1 last;

rewrite ^/(at)\/(\w*)\/(\d*)(\.html)$ index.php?s=$1&c=$2&p=$3 last;

rewrite ^/(sc)\/(.*)\/(\d*)(\.html)$ index.php?s=$1&k=$2&p=$3 last;

rewrite ^/uc\/(.*)\.html$ index.php?s=uc&pg=$1 last;

rewrite ^/dt\/(\d*)\.html$ index.php?s=dt&id=$1 last;

rewrite ^/admin\/(.*)$ index.php?s=admin&pg=$1 last;

rewrite ^/api\/v1\/(.*)$ index.php?s=api/v1&pg=$1 last;

上面配置信息,在windows环境下没有出现问题,并且可以正常使用,说明配置的没有问题,但为什么上传到服务器就不生效了呢,并且显示404 not found。

经过我不断的测试及排查,发现确实是伪静态配置信息有问题,虽然在本地windows环境下是ok的,但毕竟linux和windows不同,所以会出现问题:

正确的配置如下:

rewrite ^/(verifyimg)(\.png)$ /index.php?s=$1&%1 last;

rewrite ^/(log|reg|login|loginfunc|checkToken|index)$ /index.php?s=$1 last;

rewrite ^/(at)\/(\w*)\/(\d*)(\.html)$ /index.php?s=$1&c=$2&p=$3 last;

rewrite ^/(sc)\/(.*)\/(\d*)(\.html)$ /index.php?s=$1&k=$2&p=$3 last;

rewrite ^/uc\/(.*)\.html$ /index.php?s=uc&pg=$1 last;

rewrite ^/dt\/(\d*)\.html$ /index.php?s=dt&id=$1 last;

rewrite ^/admin\/(.*)$ /index.php?s=admin&pg=$1 last;

rewrite ^/api\/v1\/(.*)$ /index.php?s=api/v1&pg=$1 last;

有没有发现上下两端内容有什么不同?

其实就是在每个index.php前面加了一个斜杠/,那是因为前面 的规则内容前也有斜杠/,这里还是很容易忽略的;

如果你也出现伪静态不生效问题,不妨往这个方便考虑检查一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值