记录 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; } }
===