Try_files nicht auf PHP ( NginX-Konfiguration)
Unten ist meine nginx.conf.
Im Falle von nicht vorhandenen Dateien /index.php
serviert feine.
Aber wenn meine URL ist /foo/bar => /foo/bar/index.php
wird Ihnen als PHP-source-code per download.
Irgendwelche Ideen?
try_files $uri $uri/ $uri/index.php /index.php;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
- Haben Sie begonnen, Ihre fastcgi-service?
- 🙂 Sicher, dass es auch dazu dient die Letzte option /index.php wenn ich die nicht vorhandene URL.
- Ich habe das gleiche problem. Wenn ich auf eine url, die Karten auf eine nicht-existente Datei, es richtig führt index.php. Allerdings, wenn ich eine neue php-Datei und versuchen zu schlagen, die Datei direkt, bekomme ich den Quellcode
- Hmm der einzige Unterschied, den ich sehen kann zwischen mein und dein ist, ist mir nicht innerhalb einer Lage. try_files $uri $uri/ /index.php?$args;
- Ich habe versucht das auch.
- in Ihrem Beispiel oben, was heppens, wenn Sie versuchen, /foo/bar/index.php direkt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lösung war, fügen index index.php
try_files
. Das problem ist, dass eine interne Weiterleitung (dh ein Versuch, um zu überprüfen, ob alle anderen regexes wie Ihr Umgang mit PHP, regex) wird nur erteilt, für die Letzte fallback-parameter. In der Konfiguration in deiner Frage, den Antrag für/index.php
gar nicht versuchen, match regex. Der Grund, deine Antwort funktioniert, weilindex anything
Ausgabe einen internen redirect, wennanything
zugegriffen wird, wodurch die eigentliche PHP-regex-match.Meine config
reload von nginx und fastcgi beide
Ich hatte auch das gleiche Problem. Bei mir hatte das folgende in die PHP-Kontext (
location ~ ^(.+\.php)(.*)$ { ...
):.. es ist immer wieder 404. Schließlich lese ich die try_files docs, wo es heißt:
Hatte ich nur definiert
alias
für jedes location-block (und keiner in der PHP-FPM-block, natürlich), aber nicht über eine insgesamtroot
nirgendwo eingestellt, so dass NGiNX nicht wissen, wo Sie für eine Datei zu suchen. Sobald ich root für den server-block, es begann zu arbeiten.