2016-03-19 4 views
1

Ich finde wirklich keine Dokumentation Ich finde klar, URL-Neuschreiben (ich kann es nicht verstehen, wie ich unerwartet finde die Dokumentation wirklich schwer zu lesen für eine nicht-native).Andere URL-Umschreibung nach Standorten

ich nach einer Möglichkeit, alle Routen neu zu schreiben, die /*\.(js|png|jpg|css|ttf|xml)$/ zu path/media/ passt und versuchen existance von Datei es sich dann zurück, wenn vorhanden, sonst 404 not found

dann, wenn es mit /ajax/ umleiten alle davon in Richtung path/ajax/index.php beginnt sonst umleiten alle davon in Richtung path/www/index.php

Ich verstehe nicht ganz, wie ich es tun sollte, denn jetzt habe ich 3 Standorte/Medien /,/Ajax/und/www/aber ich weiß nicht, ob es das ist richtige Art und Weise, um das Umschreiben zu verwenden und nicht zurückzukehren, oder sind die Orte der richtige Weg, dies zu tun.

Ich verstehe nicht wirklich, was ich in meinem sites-enabled/file in Bezug auf fastcgi geschrieben habe. Ist das ein Interpretationsweg?

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; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    include fastcgi_params; 
} 

Wenn ich es richtig machen, bedeutet es, „wenn es mit .php endet, und es existiert in der Hierarchie, es dann ausführen“.

Und ich weiß nicht, ob ich diese Art von Sachen für jeden Standort, der mit php (/ www/und/ajax /) zu tun haben sollte, insbesondere da ich einige Routing für beide tun werde. Außerdem weiß ich nicht, ob es so gemacht werden sollte.

Antwort

1

Die einfachste PHP-Konfigurationen verwenden eine gemeinsame root Richtlinie, die durch die Lage Blöcke vererbt wird, und in Ihrem Fall wäre:

root path; 

Das bedeutet, dass /www/index.php und /ajax/index.php werden beide durch den Block location ~ \.php$ verarbeitet.

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

Wenn Sie mit /ajax, fügen Sie einen spezifischeren Standort beginnen für URIs, die eine andere Standardaktion benötigen:

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

Die Standardaktion kann durch die try_files Richtlinie innerhalb eines location / Block definiert werden

Wenn Sie nicht möchten, dass Ihre Medien-URIs mit beginnen, können Sie die root für eine bestimmte Position überschreiben:

location ~* \.(js|png|jpg|css|ttf|xml)$ { 
    root path/media; 
} 

Die Anweisungen und fastcgi_index sind in Ihrem speziellen Fall nicht erforderlich. Die include fastcgi_params; Anweisung sollte vor jeder fastcgi_param Richtlinie in Verkehr gebracht werden, die letztere zu vermeiden versehentlich überschrieben werden:

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

die nginx documentation für Details.

Verwandte Themen