0

私はnginxが初めてです。サーバーを apache から nginx に移行していますが、CodeIgniter コア PHP サイトの多くのプロジェクトは完全に機能していますが、CodeIgniter は機能していません。

このような私のサンプルURL:

http://example.com/track/

これは次の場所にリダイレクトされます:

http://example.com/track/index.php/sessions/login

しかし、404 Not Found が返されます。

私のサーバーは次のように構成します:

server {
    listen       80;
    server_name  192.168.0.80;

    location / {
        root   /usr/share/nginx/html;
        index  index.php index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }



    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root           /usr/share/nginx/html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
       deny  all;
    }
}

このような私のエラーログファイル

2013/05/15 10:21:37 [error] 2474#0: *3 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.0.11, server: 192.168.0.80, request: "GET /favicon.ico HTTP/1.1", host: "192.168.0.80"
2013/05/15 10:21:37 [error] 2474#0: *1 FastCGI sent in stderr: "Unable to open primary script: /usr/share/nginx/html/index.php (No such file or directory)" while reading response header from upstream, client: 192.168.0.11, server: 192.168.0.80, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "192.168.0.80"
2013/05/15 10:22:05 [error] 2474#0: *1 open() "/usr/share/nginx/html/track/index.php/sessions/login" failed (20: Not a directory), client: 192.168.0.11, server: 192.168.0.80, request: "GET /track/index.php/sessions/login HTTP/1.1", host: "192.168.0.80"
2013/05/15 10:26:46 [error] 2474#0: *5 open() "/usr/share/nginx/html/track/index.php/sessions/login" failed (20: Not a directory), client: 192.168.0.11, server: 192.168.0.80, request: "GET /track/index.php/sessions/login HTTP/1.1", host: "192.168.0.80"
2013/05/15 10:28:33 [error] 2474#0: *7 open() "/usr/share/nginx/html/track/index.php/sessions/login" failed (20: Not a directory), client: 192.168.0.11, server: 192.168.0.80, request: "GET /track/index.php/sessions/login HTTP/1.1", host: "192.168.0.80"
2013/05/15 10:29:59 [error] 2497#0: *1 open() "/usr/share/nginx/html/track/index.php/sessions/login" failed (20: Not a directory), client: 192.168.0.11, server: 192.168.0.80, request: "GET /track/index.php/sessions/login HTTP/1.1", host: "192.168.0.80"

どうしたの?Googleで検索しましたが、完全には機能しませんでした。

4

2 に答える 2

1

このリンクをチェックして、書き換えの問題を修正してください。
さらに質問がある場合は、尋ねることができます。
nginx のコードイグナイター

編集:
あなたのケースを修正する方法はいくつかありますが、あなたのケースに最も近いものを説明します

nginx conf と同じファイルで編集する場合は、現在行っていると思われる方法で、これを追加してみてください

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

ルーティングを$request_uri追加する必要があるかどうかはindex.php不明です。そして、このサブフォルダーを認識するように CodeIgniter を構成する必要があると思います

$config['base_url'] = "192.168.0.80/track"

これは、この構成を行うための最もクリーンな方法ではありません。ドメイン名を追加して/etc/hosts、nginx で新しい別のサーバーを作成することをお勧めします。

于 2013-05-15T05:06:21.053 に答える
0

今日、似たような問題に遭遇しました。コード イグナイターの URI ルーティングでは、REQUEST_URI 変数と SCRIPT_NAME 変数の両方を定義する必要があります。Nginx/PHP-FPM ガイドの多くは SCRIPT_NAME 変数を定義していないため、ルーティング エラーが発生します。次のような行を追加する必要があります。

fastcgi_param  SCRIPT_NAME $fastcgi_script_name;

config.phpファイルでREQUEST_URIを使用すると、ルーティングが機能するはずです。

于 2014-10-02T17:12:48.353 に答える