nginx 隐藏 index.php

使用情景如下:

在访问 http://php.cc/Att/AttList 的时候、跳转到 http://php.cc/index.php/Att/AttList ;

也就是开启重写功能;

在nginx配置文件nginx.conf中添加:

location / {
  if ( !e $request_filename ) {
    rewrite ^/(.*)$ /index.php/$1 last;
  }
}

如果项目入口文件是在一个子目录里面,则如下:

location / {
  if ( !e $request_filename ) {
    rewrite ^/目录/(.*)$ /目录/index.php/$1 last;
  }
}

切记:不可以出现两个location / {}、否则nginx服务器将启动不了;

我的配置文件如下:

server {
  listen 80;
  server_name www.abcphp.cc abcphp.cc;
  root "D:/abc/php";
  location / {
    if (!-e $request_filename) {
      rewrite ^/(.*)$ /index.php?$1 last;
    }
    index index.html index.htm index.php;
    autoindex on;
  } 
  location ~ \.php(.*)$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
    include fastcgi_params;
  }
} 

其中:

autoindex on; 是打开nginx的浏览目录的功能;

原文地址:https://mp.weixin.qq.com/s/ltd3LlZn4vpq1vxCRqSaQQ