这是本人原创,转载请注明出处。
网上搜了好久,也没找到,还是得自己弄。
这其中的重要原因是:竟然,官网没有给nginx的配置??
thinkphp 5 ,laravel 5,yii 2,人家的官网都是给 nginx的配置的。
但是 CodeIgniter 真没有。
经本人实际测试的最佳配置如下,和thinkphp5.1 的最佳配置一样的。
特别说明,按照本文的配置,不需要修改php.ini,极为方便。
server { listen 80 ; server_name www.d8.com; root /var/www/citest; index index.php index.html; location / { try_files $uri /index.php$uri$is_args$args; } # 这行设置使得3个目录被禁止url直接访问。很安全。 location ~ ^/(application|system|user_guide) { deny all; } location ~ \.php { include fastcgi_params; fastcgi_pass php72-fpm:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; } }
这里再说明一下,这是本人实测的结果。
分两种,一种是url中带index.php,一种是url中没有index.php
另外,根据是否有控制器文件夹,也都试过了。
还有,我没有修改默认的路由设置。
我测试的url包括:
http://www.d8.com/index.php/path1/path2/path3?aa=4
http://www.d8.com/path1/path2/path3?aa=4
http://www.d8.com/index.php/pages/view/about3?aa=4
http://www.d8.com/pages/view/about3?aa=4
全部显示成功,全部都有$_GET的值。
前面两个url我建立了application/ path1 这个文件夹,控制器是Path2.php
后两个url是直接在controller下建立了Pages.php 作为控制器。
全部通过!
唯一和thinkphp 的最佳配置的小小差异是,这里添加了对3个目录的直接访问。
因为 ci 默认下载的 类库,把index.php放在最外层了。这样设置的话,就很安全了。
妈妈再也不用担心我找不到 CodeIgniter 3.1 的合适的 nginx 的配置了!