nginx不支持Thinkphprewrite兼容模式的问题

来源:互联网 发布:义乌摄影美工培训学校 编辑:程序博客网 时间:2024/06/05 02:54
第一步,修改server块
  1. server {

  2.     listen   80;

  3.     server_name  www.domain.com domain.com;

  4.     error_page   404              /404.html;

  5.     error_page   500 502 503 504  /50x.html;

  6.  #这个location块处理动态资源请求.

  7.     location ~  \.php   {

  8.         root /data0/htdocs/www;

  9.         fastcgi_pass   127.0.0.1:9000;

  10.         include        fastcgi.conf;       

  11.     }

  12.     #这个location处理能处理所有的静态资源

  13.     location / {

  14.         root   /data0/htdocs/www;

  15.         index  index.php index.html index.htm;

  16.         #如果请求资源既不是静态目录资源(目录资源就是请求该目录下的默认首页index指令指定的默认资源),也不是静态文件资源时候,就需要脚本动态生成,重写后重新用第一个处理动态请求的location块处理。

  17.         if (!-e $request_filename){

  18.             #一定要用(.*)匹配整个URI,包含URI第一个字符反斜杠/

  19.             rewrite ^(.*)/index.php?s=$1 last;

  20.         }

  21.     }

  22.  }

复制代码

第二步:打开thinkphp框架的配置文件convention.php,

修改URL_MODEL=>3,采用rewrite兼容模式,并且修改
'VAR_PATHINFO'=> 's', 重写时我们用的是s=""的形式.

第三步:在浏览器输入:www.domain.com,结果如下:

:)

欢迎使用 ThinkPHP!

[ 您现在访问的是Home模块的Index控制器 ]

第四步:在浏览器中输入URL时候,还是用rewrite形式的url,就是不要输入入口文件了,其它的不变,例如:
http://www.domain.com/module/controler/action/参数1/值1/参数2/值2/

网址中不再需要输入入口文件index.php了,因为在刚才重写时我们已经指定好了入口文件index.php。