nginx支持thinkphp的pathinfo
现在发现问题有两个:
1 不支持pathinfo。
localhost/?m=login可以访问,localhost/login不能访问。
2 thinkphp的u方法生成的地址错误。
u('login/index')生成的地址是/login-index.html。
nginx配置文件:
location ~ \.php$ {
root d:/appserv/www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param script_filename $document_root$fastcgi_script_name;
set $path_info ;
set $real_script_name $fastcgi_script_name;
if ( $fastcgi_script_name ~ ^(.+?\.php)(/.+)$ ) {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param script_name $real_script_name;
fastcgi_param path_info $path_info;
include fastcgi_params;
}
.htacess:
rewriteengine on
rewriterule ^(.*)$ index.php/$1 last
nginx错误日志:
2014/10/27 13:54:42 [error] 5404#5668: *107 createfile() d:/appserv/www/login failed (2: the system cannot find the file specified), client: 127.0.0.1, server: localhost, request: get /login http/1.1, host: localhost
------解决思路----------------------
server {
listen 80;
server_name www.phpno.com;
root /home/www/www_phpno_com/admin_wwwroot;
access_log off;
error_page 404 /404.html;
location /404.html {
root /home/www/www_phpno_com/admin_wwwroot;
}
location /{
index index.html index.htm index.php;
if (-e $request_filename) {
break;
}
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
break;
}
}
location ~ .+\.php($
------解决思路----------------------
/) {
root /home/www/www_phpno_com/admin_wwwroot;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param script_filename $document_root$fastcgi_script_name;
fastcgi_param path_info $fastcgi_path_info;
fastcgi_param path_translated $document_root$fastcgi_path_info;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
}
}
自己对比一下