2012-01-13 100 views
18

我试图设置Laravel PHP框架与Nginx一起使用。这里是我的目录结构:用Nginx设置Laravel

/project 
    /application 
    /laravel 
    /public 
     index.php 
    /legacy 
     /index.php 
     /stylesheets 
     default.css 

基本上我已经是一个标准的Laravel下载W /中抛出legacy文件夹包含所有从我的非MVC项目的文件。

我需要Nginx先检查请求的页面/文件是否存在于遗留内部,如果它确实存在,那么我想使用它。否则,我想回退到位于project/public/的Laravel的index.php文件。

对于Nginx配置,我不是专家,所以任何帮助,你可以提供将是最受赞赏。

+0

这不是Laravel,但本教程应该指向正确的方向:https://nealpoole.com/blog/2011/04/setting-up-php-fastcgi-and-nginx-dont-信任最教程 - 检查 - 你的配置/ – mikelbring 2012-03-01 01:55:08

回答

20
server { 
    server_name .laravel.dev; 
    root /home/tamer/code/laravel/public; 

    index index.php index.html; 

    #browse folders if no index file 
     autoindex on; 

    # serve static files directly 
    location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ { 
     access_log off; 
     expires max; 
    } 

    # removes trailing slashes (prevents SEO duplicate content issues) 
    if (!-d $request_filename) 
    { 
     rewrite ^/(.+)/$ /$1 permanent; 
    } 

    # enforce NO www 
    if ($host ~* ^www\.(.*)) 
    { 
     set $host_without_www $1; 
     rewrite ^/(.*)$ $scheme://$host_without_www/$1 permanent; 
    } 


    # canonicalize codeigniter url end points 
    # if your default controller is something other than "welcome" you should change the following 
    if ($request_uri ~* ^(/lobby(/index)?|/index(.php)?)/?$) 
    { 
     rewrite ^(.*)$/permanent; 
    } 

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

    # unless the request is for a valid file (image, js, css, etc.), send to bootstrap 
    if (!-e $request_filename) 
    { 
     rewrite ^/(.*)$ /index.php?/$1 last; 
     break; 
    } 

    # catch all 
    error_page 404 /index.php; 

     location ~ \.php$ { 
     try_files $uri =404; 
       fastcgi_pass unix:/tmp/php.socket; 
       fastcgi_index index.php; 
       #include fastcgi_params; 
       include /home/tamer/code/nginx/fastcgi_params; 
     } 
     access_log /home/tamer/code/laravel/storage/logs.access.log; 
     error_log /home/tamer/code/laravel/storage/logs.error.log; 
}