Thinkphp Nginx rewrite 规则

分类:技术文档 - JS文档 | 阅读(4039) | 发布于:2014-05-18 09:53

log_format  blog.lixiaocheng.cn  '$remote_addr - $remote_user [$time_local] "$request" '
             '$status $body_bytes_sent "$http_referer" '
             '"$http_user_agent" $http_x_forwarded_for';
server
	{
		listen       80;
		server_name blog.lixiaocheng.cn;
		index index.html index.htm index.php default.html default.htm default.php;
		root  /www/blog/Publick;

		include none.conf;
		
		location ~ .php
			{
				#原有代码
				try_files $uri =404;
				fastcgi_pass  unix:/tmp/php-cgi.sock;
				fastcgi_index index.php;
				include fcgi.conf;
				
				
                #定义变量 $path_info ,用于存放pathinfo信息
                set $path_info "";
                #定义变量 $real_script_name,用于存放真实地址
                set $real_script_name $fastcgi_script_name;
                #如果地址与引号内的正则表达式匹配
                if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
                        #将文件地址赋值给变量 $real_script_name
                        set $real_script_name $1;
                        #将文件地址后的参数赋值给变量 $path_info
                        set $path_info $2;
                }
                #配置fastcgi的一些参数
                fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
                fastcgi_param SCRIPT_NAME $real_script_name;
                fastcgi_param PATH_INFO $path_info;
			}

		location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
			{
				expires      30d;
			}

		location ~ .*\.(js|css)?$
			{
				expires      12h;
			}
			
		
        #如果请求既不是一个文件,也不是一个目录,则执行一下重写规则
        if (!-e $request_filename)
            {
                #地址作为将参数rewrite到index.php上。
                rewrite ^/(.*)$ /index.php/$1;
                #若是子目录则使用下面这句,将subdir改成目录名称即可。
                #rewrite ^/subdir/(.*)$ /subdir/index.php/$1;
            }
		
		access_log  /home/wwwlogs/blog.lixiaocheng.cn.log  blog.lixiaocheng.cn;
	}

标签:ThinkphpNginxrewrite