2017-04-09 5 views
0

J'utilise Laravel's valet sur mon ordinateur. Je n'ai pas eu de problème avec ça sur ma section locale. Mon serveur distant utilise Ubuntu 16.04.Nginx - Rediriger 404 fichiers PHP

J'ai un index.php comme si à la racine de mon site:

<?php 

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

src/core/bootstrap.php est plein de trucs pour composer et databases. Mais voici ce src/controllers/index.php est:

<?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"; 

Ainsi, lorsque les utilisateurs visitent site.com, il va main puisqu'il est la page d'accueil. Mais, disons, par exemple, ils visitent: site.com/about, puis $page serait about et le routage de violon .... Tout cela m'a été enseigné sur Laracasts, excusez-moi si cela semble ... rudimentaire. Le problème réside, quand je visite site.com/api, il me montre juste une page blanche. Ou, comme, book?id=1 page blanche. Ou

Voici le bloc nginx de valet qui indique au serveur ce qu'il faut faire avec les fichiers non trouvé:

location/{ 
    rewrite VALET_SERVER_PATH last; 
} 

Comment puis-je appliquer que sur mon site? J'ai essayé substituer VALET_SERVER_PATH avec /var/www/html mais je viens de recevoir une erreur de serveur 500.

Voici mon nginx actuel bloc:

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; 
    } 
} 

Il fonctionne. Mais seulement pour la première page. Oui, j'ai HTTPS activé et le trafic www est redirigé vers non-www URI.

Répondre

1

Apporter des modifications sur les directives suivantes:

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

bien, comment cela. Je vois ce qui se passe - ça a marché! Je vous remercie. – nn2