nginx重写规则codeigniter

时间:2015-01-06 20:01:14

标签: php .htaccess codeigniter nginx

我正在使用Winginx在Windows上使用nginx php和mysql。 我想运行并配置CodeIgniter 2。

Winginx结构:

d:\winginx|
    nginx.exe
    php5\php.exe
    mysql\mysqld.exe
    \home\localhost\public_html\codeigniter

以此为基础(http://wiki.nginx.org/Codeigniter

和此(http://www.farinspace.com/codeigniter-nginx-rewrite-rules/

和此(Nginx rewrite rule for CodeIgniter

我尝试coonfig ci但我只看到codeigniter 404页面(没有nginx 404页面)

我的ci config.php是

$config['base_url'] = "";
$config['index_page']   = "";
$config['uri_protocol'] = "AUTO";
..

nginx.config是

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        temp/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    client_max_body_size 55m;

    #gzip  on;

    scgi_temp_path  temp/uwsgi_temp 1 2;
    uwsgi_temp_path  temp/uwsgi_temp 1 2;

    fastcgi_connect_timeout 1;

    include codeigniter.conf;
}

我在nginx.conf中包含codeigniter.conf codeigniter.conf是:

server {
        listen       80;
        server_name localhost;
        root home/localhost/public_html/codeigniter:
        autoindex on;
        index index.php;

        location / {

            try_files $uri $uri/ /index.php?/$request_uri;

            location = /index.php{

                fastcgi_pass localhost:9000;
                #fastcgi_split_path_info       ^(.+\.php)(.*)$;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                #fastcgi_param PATH_INFO       $fastcgi_path_info;
                include fastcgi_params;
            }
        }

        location ~ \.php$ {
            return 444;
        }


}

我尝试3种不同的coonfig ci,但我只看到codeigniter 404页面(没有nginx 404页面)。

http://localhost/codeigniter/welcome/index -> CI 404 page!
http://localhost/codeigniter/welcome -> CI 404 page!
http://localhost/codeigniter -> CI 404 page!

我是guest,问题是由codeigniter.conf中的php文件位置创建的

请帮我配置它!

2 个答案:

答案 0 :(得分:1)

我试试这个

server {
    listen       80;
    server_name localhost;
    root home/localhost/public_html/codeigniter;
    autoindex on;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php;
    }

    location = /index.php {
        fastcgi_pass localhost:9000;
        #fastcgi_split_path_info       ^(.+\.php)(.*)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #fastcgi_param PATH_INFO       $fastcgi_path_info;
        include fastcgi_params;
    }

    location ~ \.php$ {
        return 444;
    }
}

以下是我用于生产CI安装的内容

server
{
    listen 80 default_server;
    server_name www.site.com;

    root /var/www;
    index index.php;

    # canonicalize codeigniter url end points
    location ~ ^/index.php/(.*[^/])$ { return 301 $scheme://$host/$1/$is_args$args; }
    location ~ ^/index.php/(.*)/$ { return 301 $scheme://$host/$1/$is_args$args; }

    location / {
        # Check if a file or directory index file exists, else route it to index.php.
        try_files $uri $uri/ /index.php;
    }



    location ~ \.php$
    {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

答案 1 :(得分:0)

我按照以下方式工作......

server {
        listen 127.0.0.1:80;
        server_name  xxxx www.xxxx;
        root home/xxxx/public_html;
        autoindex on;
        index index.php;

        location / {

            try_files $uri $uri/ /index.php?/$request_uri;

            location ~ \.php$ {
                if (!-e $document_root$document_uri){
                    return 404;
                }
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
            }

        }

        location ~ \.php$ {
            return 444;
        }
}