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文件的操作方法
原文地址:http://www.cnblogs.com/taotaoxixihaha/p/7668368.html