检测到您启用了Adblock等屏蔽广告扩展,导致正常的内容图片无法显示,为了不影响阅读体验,建议您将www.xiaoz.me加入白名单。

thinkphp在nginx服务器使用伪静态规则

最近公司一个项目使用了thinkphp框架进行开发,在Apache服务器上开启pathinfo是没有任何问题的,然后部署到nginx的服务器上,那么问题就来了,nginx服务器上才发觉nginx是不支持pathinfo的,网上搜索了别人的解决方法,有两种思路:

1、修改thinkphp让他可以在nginx上运行
2、修改nginx让它支持pathinfo

不过个人感觉使用这两种方法有点麻烦,而且还不一定能成功,后来又发现一种新的方法,简便快捷。首先新增一个rewrite规则

1
2
3
4
5
6
    location / { 
    if (!-e $request_filename) { 
    rewrite ^(.*)$ /index.php?s=$1 last; 
    break; 
    } 
    }

然后将thinkphp配置文件下url模式改为2

1
    'URL_MODEL'=>2,

如果是多个项目,布署项目时要把项目布署到目录里,如后台的项目放到Admin目录里,那么在nginx的rewrite里再写一条。

1
2
3
4
5
6
    location /Admin/ { 
    if (!-e $request_filename) { 
    rewrite ^/Admin/(.*)$ /Admin/index.php?s=$1 last; 
    break; 
    } 
    }

最后也不要忘记把这个项目的url模式改为2

因为服务器安装了AMH面板,顺便分享在AMH面板下如何使用,当然LNMP一键安装包同理。

一、首先在AMRewrite这个模块中可以管理所有rewrite规则和新增其它规则,我们需要新增一个,将上面的规则复制并保存,如下截图。

edit_rewrite

二、然后在虚拟主机中,选择刚才添加好的rewrite规则即可,这个时候你就会发现thinkphp在nginx服务器已经支持伪静态了,LNMP一键安装包的童鞋可能需要手动找到这些配置文件并修改。

select_rewrite

4 Comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注