几乎所有的框架(ThinkPHP,Zend Framework,CI,Yii,laravel等)都会使用URL重写或者pathinfo模式,使URL看起来更美观,比如可以隐藏掉入口文件,并且有利于搜索引擎优化,其实让Nginx支持pathinfo或者重写也不难,首先在php.ini中设置cgi.fix_pathinfo=1

再就是添加配置文件(新版nginx) 内容如下:

#pathinfo 支持开始  以上配置信息根据实际情况配置
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
#pathinfo 支持结束

可能很多童鞋看到以上配置仍然不知道在哪添加这几行配置,下面看一个完成的配置

server
{
listen 80 ;
server_name _;
index index.html index.htm index.php;
root /home/wwwroot/default;
#匹配php脚本扩展名
location ~ [^/]\.php(/|$)
{
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php; #fastcgi相关参数开始
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REQUEST_SCHEME $scheme;
fastcgi_param HTTPS $https if_not_empty; fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param REDIRECT_STATUS 200;
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
#fastcgi相关参数结束 #pathinfo开始
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
try_files $fastcgi_script_name =404;
#pathinfo结束
} #重写模式开始
location / {
if (!-e $request_filename){
#rewrite ^(.*)$ /index.php?s=/$1 last;
rewrite ^(.*)$ /index.php/$1 last;
}
}
#重写模式结束
}

这样Nginx就支持pathinfo了,当然您需要根据您的服务器进行具体的配置,可能会略有变化,切忌机械的照搬照抄。

对于URL重写也比较简单,上面的配置中也已经提到 例如对于THINKPHP可以这样设置

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

最新文章

  1. JQuery Mobile 页面参数传递
  2. Python检验一个文件是否存在,如果不在就自己填写内容。
  3. PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [1] 单例模式连接数据库
  4. 基于RBAC模型的通用企业权限管理系统
  5. ant风格是什么?
  6. sail.js学习 - 一些问题
  7. Python属性、方法和类管理系列之----元类
  8. 图解HTTP读书笔记--精简版
  9. Flex性能调优相关的一些总结
  10. System.arraycopy(src, srcPos, dest, destPos, length) 与 Arrays.copyOf(original, newLength)区别
  11. 使用Dreamweaver正则表达式替换href中的内容
  12. shell之九九乘法表
  13. Maven deploy部署jar包到远程私仓
  14. clickhouse修改时区
  15. 洛谷P4482 [BJWC2018]Border 的四种求法 字符串,SAM,线段树合并,线段树,树链剖分,DSU on Tree
  16. Error: “app_name” is not translated in af
  17. C++ Primer 笔记——IO类
  18. R t-test cor.test
  19. js高级-闭包
  20. C语言 · 方程的解

热门文章

  1. Servlet初级学习加入数据库操作(三)
  2. 通过js触发launch事件获取页面信息
  3. PPT2010制作充电动画
  4. 机器学习&恶意代码检测简介
  5. JQuery选择器的使用和分类
  6. Django db使用MySQL连接池
  7. golang中结构体标签在json中的应用
  8. golang中的反射reflect详解
  9. 集合框架-Map重点方法entrySet演示
  10. (4)puppet常用的资源及其常用属性