Конфигурация nginx для Laravel 4

Я пытаюсь настроить свой проект Laravel 4 с помощью nginx. Вот мой сервер nginx для laravel:

server {
        listen 80;

        root /home/prism/www/laravel/public;
        index index.php index.html index.htm;

        server_name example.com;

        location / {
                try_files $uri $uri/ /index.php$is_args$args;

        }
               location ~ \.php$ {

                try_files $uri =404;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }

Но моя проблема в том, что она показывает ошибку "404 не найдена" для всех других маршрутов, кроме стандартной по умолчанию, которая поставляется с установкой по умолчанию.

Ответ 1

Это конфигурация NGINX, которую я использовал с Laravel 4 и Laravel 4.1, которые работают.

server {

    listen  80;
    server_name sub.domain.com;
    set $root_path '/var/www/html/application_name/public';
    root $root_path;

    index index.php index.html index.htm;

    try_files $uri $uri/ @rewrite;

    location @rewrite {
        rewrite ^/(.*)$ /index.php?_url=/$1;
    }

    location ~ \.php {

        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index /index.php;

        include /etc/nginx/fastcgi_params;

        fastcgi_split_path_info       ^(.+\.php)(/.+)$;
        fastcgi_param PATH_INFO       $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {
        root $root_path;
    }

    location ~ /\.ht {
        deny all;
    }

}

Ответ 2

вы можете попробовать это для местоположения /{...}

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

$query_string работал у меня.