nginx下thinkphp的URL重定向

最近使用thinkPHP框架进行开发的时候遇到一个问题,把项目部署到Linux上用nginx当服务器的情况下,URL重定向出现问题,同样的URL后缀,在本地环境可以正常访问,在服务器上就出现了404 ,但是使用TP的全路径URL是可以访问的。后来经过查看发现是由于本地环境和服务器上使用的服务载体不同导致的,本地环境使用的是Apache,服务器上使用的是nginx。经过查看TP的官方文档,解决了问题:
Apache的URL重写:

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

nginx的重写,需要在nginx的配置信息中添加:

  location / { // …..省略部分代码
   if (!-e $request_filename) {
   rewrite  ^(.*)$  /index.php?s=$1  last;
   break;
    }
 }

然后要把项目的URL_MODEL改成2:

‘URL_MODEL’ => 2, URL访问模式,可选参数0、1、2、3,代表以下四种模式: 0

(普通模式); 1 (PATHINFO 模式); 2 (REWRITE 模式); 3 (兼容模式) 默认为PATHINFO 模式

参考文档:TP官方文档

    原文作者:fyqingAwsjFE
    原文地址: https://segmentfault.com/a/1190000012606996
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞