昨天公司同事让我帮他给一个项目的后台加个小功能。因为他用的是thinkphp,原本以为一切都很正常,我直接把laravel的nginx配置复制出来修改了一下,结果。。。😵
有问题找百度,各种百度后发现
ThinkPHP支持通过PATHINFO和URL rewrite的方式来提供友好的URL,只需要在配置文件中设置 ‘URL_MODEL’ => 2 即可。在Apache下只需要开启mod_rewrite模块就可以正常访问了,但是Nginx中默认是不支持PATHINFO的,所以我们需要修改nginx.conf文件。
这是我在thinkphp社区找到的nginx配置,完美解决!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
   | server {     listen 80;     server_name    mydomain.vm    www.mydomain.vm;     access_log    /app/logs/nginx/mydomain_access.log;     error_log    /app/logs/nginx/mydomain_error.log;     set        $root    /app/www/mydomain.vm/public;     location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$     {         root $root;     }     location / {         root    $root;         index    index.html index.php;         if ( -f $request_filename) {             break;         }         if ( !-e $request_filename) {             rewrite ^(.*)$ /index.php/$1 last;             break;         }     }     location ~ .+\.php($|/) {         set $script $uri;         set $path_info "";         if ($uri ~ "^(.+\.php)(/.+)") {             set $script $1;             set $path_info $2;         }         fastcgi_pass    unix:/run/php/php7.0-fpm.sock;         fastcgi_index    index.php?IF_REWRITE=1;         fastcgi_param    PATH_INFO    $path_info;         fastcgi_param    SCRIPT_FILENAME    $root$fastcgi_script_name;         fastcgi_param    SCRIPT_NAME    $script;         include        fastcgi_params;     } }
  |