2017-04-09 94 views
0

我在本地使用Laravel的valet。我在本地没有问题。我的远程服务器使用Ubuntu 16.04Nginx的 - 重定向404 PHP文件

我有一个index.php像这样在我的网站的根:

<?php 

require __dir__ . '/src/core/bootstrap.php'; 
require __dir__ . '/src/controllers/index.php'; 

src/core/bootstrap.phpcomposerdatabases东西。但是,这是什么src/controllers/index.php是:

<?php 
session_start(); 

use App\UserTools\User; 
use App\Core\Router; 

$page = Router::load()->fetchPage(); 

include "src/controllers/{$page}.controller.php"; 
include "src/views/{$page}.view.php"; 

因此,当用户访问site.com,它进入main因为它的主页。但是,比方说,他们访问:site.com/about,然后$page将是about和中提琴路由。这一切都是在Laracasts教给我的,所以如果这看起来很简单,请原谅。

问题在于,当我访问site.com/api时,它只是给我一个空白页面。或者,像book?id=1空白页。或

这里是valet它告诉服务器做什么用的文件nginx块未发现:

location/{ 
    rewrite VALET_SERVER_PATH last; 
} 

我如何可以应用到我的网站?我试图取代VALET_SERVER_PATH/var/www/html但我刚买了一台服务器错误500

这是我当前nginx块:

server { 
    server_name www.site.org; 
    return 301 $scheme://site.org$request_uri; 
} 

server { 
    listen 80 default_server; 
    listen [::]:80 default_server; 
    server_name site.org; 
    return 301 https://$server_name$request_uri; 
} 

server { 

    # SSL configuration 
    listen 443 ssl default_server; 
    listen [::]:443 ssl default_server; 
    include snippets/ssl-site.org.conf; 
    include snippets/ssl-params.conf; 

    root /var/www/html; 

    index index.php index.html index.htm index.nginx-debian.html; 

    server_name site.org; 

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

    location ~ /.well-known { 
     allow all; 
    } 

    location ~ \.php$ { 
     include snippets/fastcgi-php.conf; 
     fastcgi_pass unix:/run/php/php7.0-fpm.sock; 
    } 
} 

它的工作原理。但只限于首页。是的,我启用了HTTPS,并且www流量被重定向到了non-www URI。

回答

1

作出以下指令改变:

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

location ~ \.php$ { 
    include snippets/fastcgi-php.conf; 
    fastcgi_pass unix:/run/php/php7.0-fpm.sock; 
    fastcgi_split_path_info ^(.+\.php)(/.+)$; 
} 
+0

好,怎么样。我看到发生了什么 - 这很有用!谢谢。 – nn2