Ich habe eine Website, die ich von einem Apache-Server auf einen Nginx-Server verschieben muss. Diese Umleitungen www.example.com/hello www.example.com/hello.php die ursprüngliche Verbindung zu halten, aber Weglassung der .phpNginx Rewrite-Regel/try_files funktioniert nicht
Die .htaccess-Datei dieser Website ist als
RewriteEngine on
RewriteRule ^([^/\.]+)/?$ $1.php [L]
folgt vom Ende der URL.
Ich habe versucht, dies in meinem Nginx Server Block zu replizieren ..
location/{
# Check if a file exists, or route it to index.php.
try_files $uri $uri/ /index.php;
}
rewrite ^/([a-z]+)$ /$1.php last;
Die Rewrite-Regel funktioniert, alle Links auf die .php-Datei umgeleitet, aber bricht die Nginx try_files Regel in einem Verzeichnis für die Suche, wenn die Die Datei existiert nicht.
Der unten gezeigte Admin-Link ist ein Ordner mit einer index.php-Datei darin.
www.example.com/admin
Die try_files sollte dies ..
www.example.com/admin/
Da umleiten keine Datei admin.php genannt wird. Stattdessen erhalte ich die Meldung 'Keine Eingabedatei angegeben'.
Wenn ich das Neuschreiben entferne, funktioniert die try_files korrekt. Der Rest der Site funktioniert jedoch nicht ohne diese Rewrite-Regel.
Weiß jemand, wie ich die try_files und das Neuschreiben bekommen kann, um zusammen zu arbeiten?
Dank
Ben