Ich versuche, einen Alias einzurichten. Wenn jemand darauf zugreift /phpmyadmin/
, wird er von nginx /home/phpmyadmin/
nicht aus dem üblichen Dokumentenstamm, sondern von nginx abgerufen. Jedes Mal, wenn ich die URL aufrufe, erhalte ich eine 404 für alle Elemente, die nicht über fastcgi abgerufen wurden. fastcgi scheint gut zu funktionieren, der Rest nicht. strace
sagt mir, dass es versucht, alles andere aus dem üblichen Dokumentenstamm zu ziehen, aber ich kann nicht herausfinden, warum. Kann jemand einen Einblick geben?
Hier ist der relevante Teil meiner Konfiguration:
location ~ ^/phpmyadmin/(.+\.php)$
{
include fcgi.conf;
fastcgi_index index.php;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_param SCRIPT_FILENAME /home$fastcgi_script_name;
}
location /phpmyadmin
{
alias /home/phpmyadmin/;
}
/
im Alias und in derlocation
Direktive/phpmyadminfile
tatsächlich angefordert werden/home/phpmyadminfile
. Warum die Konfiguration in der Frage nicht funktioniert, sieht für mich korrekt aus. Ich vermute, dass eine anderelocation
Direktive nicht angezeigt wird, die übereinstimmt, wenn sie nicht beabsichtigt ist. In diesem Fall schlagen die Nginx-Dokumente vor, stattdessenalias
daslocation
Präfix zu verwenden .root /home;
Antworten:
Einen Weg gefunden. Ich bin mir nicht sicher, ob es das BESTE ist, aber es funktioniert momentan auf jeden Fall.
Folgendes habe ich getan:
quelle
Ich bin mir nicht sicher, aber haben Sie versucht, es so zu schreiben:
Was ist auch die URI, von der aus Sie versuchen, darauf zuzugreifen?
Soweit ich es verstehe, müssen Sie die URI verwenden
und nicht nur
Sie können hier mehr darüber lesen: http://wiki.nginx.org/HttpCoreModule
quelle
Versuchen
quelle
Der Grund, warum dies nicht funktioniert, ist, dass der Server den auf Regex basierenden Speicherort und nicht den auf Präfixen basierenden Speicherort mit dem Alias auswählt.
Es wird nur eine ausgewählt. Es gibt einen Operator, mit dem Sie einen Präfix-basierten Speicherort abrufen können, um einen regulären Ausdruck zu übertreffen, aber dann werden Sie feststellen, dass PHP nicht funktioniert. Die Lösung wird eine Antwort von Kervin sein, bei der der PHP-Regex mit der Alias-Direktive innerhalb des Speicherorts verschachtelt ist.
Ich vermute jedoch, dass seine Einstellung SCRIPT_FILENAME dort möglicherweise nicht funktioniert, da die URL und das Alias-Verzeichnis unterschiedlich groß geschrieben werden.
quelle