nginx 重写规则 Codeigniter


nginx rewrite rules codeigniter

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

翼金克斯结构:

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/)

和这个(CodeIgniter的Nginx重写规则)

我尝试Coonfig CI,但我只看到Codeigniter 404页面(没有nginx 404页面)

我的 CI 配置.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.confcodeigniter.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!

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

请帮我配置它!

我会试试这个

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;
    }
}

我让它按以下方式工作......

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;
        }
}