Назад | Перейти на главную страницу

Ошибка перезаписи Nginx и Codeigniter

Я пытаюсь запустить сайт на nginx на базе codeigniter. Некоторые части работают, но некоторые не работают. Я заметил в журналах доступа, что index.php иногда имеет две косые черты в конце вместо одной. Я также не могу правильно получить свой пост (возвращает 404).

моя конфигурация для nginx выглядит следующим образом для моего сайта по умолчанию (он единственный на сервере)

server {
    server_name xxx.com;
    return 301 $scheme://www.xxx.com$request_uri;
}
server {
    root /srv/www/xxx;
    index index.php index.html index.htm;

    server_name www.xxx.com;

    # removes trailing "index" from all controllers
    if ($request_uri ~* index/?$)
    {
        rewrite ^/(.*)/index/?$ /$1 permanent;
    }

    if (!-e $request_filename)
    {
        rewrite ^(.*)$ /index.php/$1 last;
        break;
    }

    location \ {
        try_files $uri $uri/ @no_php_ext;
    }

    # catch all
    error_page 404 /index.php;

    location ~ \.(php)$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        # With php5-fpm:
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param   SCRIPT_FILENAME /srv/www/xxx/$fastcgi_script_name;
        include fastcgi_params;
        #fastcgi_read_timeout 900;
    }

    location @no-php-ext {
        rewrite ^(.*)$ index.php/$1 last;
    }
}

Я пробовал много изменений в перезаписи, но безуспешно. Любая помощь очень ценится.

Этот сработал для меня. Все страницы возвращаются с 200. У меня все еще есть проблемы с заданиями cron, но это следует задать в другом вопросе.

server {
        root /srv/www/xxx;
        index index.php index.html index.htm;
        server_name www.xxx.com;
        access_log  /var/log/nginx/xxx.access.log;
        error_log  /var/log/nginx/xxx.error.log;

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

                location = /index.php {
                    fastcgi_pass unix:/var/run/php5-fpm.sock;
                    include fastcgi_params;
                }

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