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

Posted 涛涛taotao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录 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; } }

 

  ===

 

以上是关于记录 nginx和php安装完后的URL重写,访问空白和隐藏index.php文件的操作方法的主要内容,如果未能解决你的问题,请参考以下文章

Nginx专题: 从编译安装到URL重写

Nginx URL重写规则配置详解

20200720记录:部署LNMP环境,构建LNMP平台,地址重写

nginx二级目录index.php重写(php)

nginx服务器中若php项目的url带参数则报错

thinkphp5 - 2 - URL重写