nginx支持rewrite

两种方式, 测试都可以

1: tryfiles的方式, 有版本限制


location / {
                try_files $uri $uri/ /index.php?q=$uri&$args;
}


2: 直接正则替换

关键代码如下

            if (!-e $request_filename) {
                rewrite ^/(.*)$ /index.php/$1 last;
            }
            
            
            	set  $path_info "";
                location /index.php {
                    if ($uri ~ "^/index.php(/.+)$") {
                        set  $path_info  $1;
                    }
                    fastcgi_pass   127.0.0.1:9001;
                    fastcgi_index  index.php;
                    fastcgi_param  SCRIPT_FILENAME  $document_root/index.php;
                    fastcgi_param  PATH_INFO $path_info;
                    include  fastcgi_params;
                }


实际开发中展示

server {
        listen        80;
        server_name  bkdemo.local bkdemo.local;
        root   "/local/var/nginx/www.w.com/db_bscore/public";
        location / {
			if (!-e $request_filename) {
                rewrite ^/(.*)$ /index.php/$1 last;
            }
            index index.php index.html;
            error_page 400 /error/400.html;
            error_page 403 /error/403.html;
            error_page 404 /error/404.html;
            error_page 500 /error/500.html;
            error_page 501 /error/501.html;
            error_page 502 /error/502.html;
            error_page 503 /error/503.html;
            error_page 504 /error/504.html;
            error_page 505 /error/505.html;
            error_page 506 /error/506.html;
            error_page 507 /error/507.html;
            error_page 509 /error/509.html;
            error_page 510 /error/510.html;
            autoindex  off;
        }
        location ~ \.php(.*)$ {
            fastcgi_pass   127.0.0.1:9001;
            fastcgi_index  index.php;
            fastcgi_split_path_info  ^((?U).+\.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;
            include        fastcgi_params;
        }
		

```
	set  $path_info "";
	location /index.php {
        if ($uri ~ "^/index.php(/.+)$") {
            set  $path_info  $1;
        }
        fastcgi_pass   127.0.0.1:9001;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root/index.php;
        fastcgi_param  PATH_INFO $path_info;
        include  fastcgi_params;
    }
```

}




原文链接: nginx支持rewrite 版权所有,转载时请注明出处,违者必究。
注明出处格式:流沙团 ( http://gyarmy.com/post-553.html )

发表评论

0则评论给“nginx支持rewrite”