记录 nginx和php安装完后的URL重写,访问空白和隐藏index.php文件的操作方法

1 sudo cd /etc/nginx/;
2 sudo vi fastcgi_params;

1.URL重写

如果你的url参数不是用?xxx传递,而是自定义的,比如用/xx/xx/xx的方式传递,那么在nginx下就要开启pathinfo

典型配置:

1 location ~ .php$ {
2     root           html;
3     fastcgi_pass   127.0.0.1:9000;
4     fastcgi_index  index.php;
5     fastcgi_param  SCRIPT_FILENAME  $DOCUMENT_ROOT$fastcgi_script_name;
6     include        fastcgi_params;
7 }

修改1,6两行,支持pathinfo

1 location ~ .php(.*)$ { # 正则匹配.php后的pathinfo部分
2     root html;
3     fastcgi_pass   127.0.0.1:9000;
4     fastcgi_index  index.php;
5     fastcgi_param  SCRIPT_FILENAME  $DOCUMENT_ROOT$fastcgi_script_name;
6     fastcgi_param PATH_INFO $1; # 把pathinfo部分赋给PATH_INFO变量
7     include        fastcgi_params;
8 }

2.当URL重写后,比如访问xxx/index.php/xxx/xxx 会空白,而用?方式访问则正常

  a.修改fastcgi_params文件

sudo cd /etc/nginx/;
sudo vi fastcgi_params;

配置文件内容:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #这行没有就添加,有了就改成这样子

  b.修改nginx配置文件

  

location ~ .php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name; # 新增

       include fastcgi_params; # 新增
}

3.隐藏入口文件

  a.如果代码就在域名指向的根目录下,则

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

  b.如果代码在域名指向的下级目录下,则

  

   #youdomain 是所在目录的名称。比如域名根目录为/var/www/html  代码所在目录为/var/www/html/wave/project,则此处youdomain均替换为wave/projetc
  location /youdomain/ { if (!-e $request_filename){ rewrite ^/youdomain/(.*)$ /youdomain/index.php?s=$1 last; } }

  ===

原文地址:https://www.cnblogs.com/taotaoxixihaha/p/7668368.html