2016-10-06 3 views
0

Ich versuche, nginx zu routen alle Anfragen zu erhalten, beginnend mit/embed zu /home/forge/dev.tline.io/embed/index.phpNgnix Download php

Meine Nginx config:

location /embed { 
    root /home/forge/dev.tline.io; 
    try_files /embed/index.php =404; 
} 

location/{ 
    root /home/forge/dev.tline.io; 
    index index.html index.htm; 
    try_files $uri$args $uri$args/ $uri $uri/ /index.html =404; 
} 

location ~ \.php$ { 
    fastcgi_split_path_info ^(.+\.php)(/.+)$; 
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; 
    fastcgi_index index.php; 
    include fastcgi_params; 
} 

Alle gehen auf /embed/index.php Anfragen, aber es läuft nicht die PHP Datei lädt es herunter.

Hinweis: http://dev.tline.io/embed/index.php compiliert wird nicht

heruntergeladen

Ich habe es

fastcgi_split_path_info ^(.+\.php)(/.+)$; 
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; 
fastcgi_index index.php; 
include fastcgi_params; 

in location /embed wenn hinzufügen zu arbeiten, aber es sollte eine bessere Möglichkeit, dies

Antwort

0

Bitte zu tun versuchen, den folgenden code,

map $request_uri $rot { 
    "~ /embed" /home/forge/dev.tline.io/embed/; 
    default /home/forge/dev.tline.io/; 
} 
map $request_uri $ind { 
    "~ /embed" index.php; 
    default index.html; 
} 
server { 
    ... 
    root $rot; 
    index index.php index.html index.htm; 
    ... 
    location/{ 
     try_files $uri$args $uri$args/ $uri $uri/ /$ind =404; 
    } 

    location ~ \.php$ { 
     try_files $uri =404; 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; 
     fastcgi_index index.php; 
     include fastcgi_params; 
    } 
    ... 
} 

Wenn dies der Fall ist Es funktioniert nicht, versuchen Sie, die Position $ind in die richtige Position zu bringen, und überprüfen Sie das Fehlerprotokoll im Falle eines zusätzlichen '/' gefunden.

+0

ich die 'root' aus dem Inneren des' location' entfernt haben, aber es hat sich nichts geändert, ich hatte schon ein 'root' Definition außerhalb des' location' – Amitay

+0

hast du try_files im php location block abgelegt? – Satys

+0

Ich fügte hinzu, dass auch nicht funktioniert. Wenn ich den PHP-Standortcode in den/embed-Block einfüge funktioniert es, aber es ist eine hässliche Lösung – Amitay

0

Diese für alle/embed URLs ausführen /embed/index.php sollte:

server { 
    root /home/forge/dev.tline.io; 

    location/{ 
     index index.html index.htm; 
     try_files $uri$args $uri$args/ $uri $uri/ /index.html =404; 
    } 

    location /embed { 
     fastcgi_param SCRIPT_NAME $document_root/embed/index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root/embed/index.php; 
     fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; 
     include fastcgi_params; 
    } 
} 
+0

Ich möchte alle Anrufe an/embed/alles zu laufen /embed/index.php alles andere, ich möchte den Standard-Standort Block verwenden – Amitay

+0

Ich habe meine Antwort entsprechend angepasst. – iquito

+0

Warum leitet es nicht intern in den 'location ~ \ .php $' Block um? Warum muss ich 'fastcgi_params' in den'/embed' Block einfügen? – Amitay