2016-09-16 4 views
1

ich diese Verzeichnisstruktur für meine ProjekteBedingtes prepend Weg in NGINX url

/var/www 
    /project-a 
    /data <-- configuration and user files/data 
    /app  <-- all the code is in sub-dirs in here 
    /pm  <-- a home brew project management app 
    /.pmdata <-- data used by pm 

Mein Ziel zu konfigurieren NGINX ist, so kann ich das Projekt zugreifen selbst durch http://project-a.dev/ und das Projektmanagement mit http://project-a.dev/pm/.

Mit anderen Worten, ich möchte die zweite URL erhalten bleiben, aber wenn die URL nicht auf /pm/* zeigt, sollte es neu geschrieben werden, um die fehlende /app vorangestellt zu haben.

Ich habe die folgende Konfiguration aber http://project-a.dev/pm/ Ergebnisse in 404 und http://project-a.dev/ erste Umleitungen zu http://project-a.dev/app/ versucht und gibt dann 404.

Was mache ich falsch?

server { 
    listen 127.0.0.1:80; 
    root /var/www/project-a; 
    index index.php index.html index.htm; 
    server_name project-a.dev; 
    location/{ 
     try_files $uri $uri/app $uri/app/ =404; 
    } 
    location ~ \.php$ { 
     try_files $uri =404; 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass unix:/var/run/php5-fpm.sock; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     include fastcgi_params; 
    } 
} 

Antwort

1

Alternativ können Sie /app zum root Wert für alle URIs hängen, die mit /pm nicht beginnen. Zum Beispiel:

server { 
    ... 
    root /var/www/project-a/app; 
    index index.php index.html index.htm; 
    location/{ 
     try_files $uri $uri/ =404; 
    } 
    location ~ \.php$ { 
     try_files $uri =404; 
     fastcgi_pass unix:/var/run/php5-fpm.sock; 
     include fastcgi_params; 
     fastcgi_param SCRIPT_FILENAME $request_filename; 
    } 
    location ^~ /pm { 
     root /var/www/project-a; 
     try_files $uri $uri/ =404; 

     location ~ \.php$ { 
      try_files $uri =404; 
      fastcgi_pass unix:/var/run/php5-fpm.sock; 
      include fastcgi_params; 
      fastcgi_param SCRIPT_FILENAME $request_filename; 
     } 
    } 
} 

Der verschachtelte Lage Block für location ~ \.php$ führt PHP-Dateien innerhalb der /pm Hierarchie. Der ^~ Modifikator ist notwendig, um die andere location ~ \.php$ Blocksteuerung zu vermeiden. Details finden Sie unter this document.