Ich habe ein kleines CMS mit PHP und MySQL erstellt. Jetzt versuche ich, NGINX Rewrite zu aktivieren, aber es funktioniert nicht und ich kann nicht verstehen, warum?
(Beispiel) Ich habe eine Seite
http://www.example.com/cars.php?id=bmw
Ich versuche diese Regel anzuwenden
rewrite ^ / listings /(.*)$ /listing.html?listing=$1 last;
Von: https://www.nginx.com/blog/creating-nginx-rewrite-rules/
Aber es funktioniert nicht.
neu schreiben ^ / cars /(.*)$ /cars.php?id=$1 last;
Ich bekomme die gleiche hässliche URL http://www.example.com/cars.php?id=bmw
Soll ich den URL-Anker im PHP-Dokument ändern? Von
<a href="cars.php?id=".$row["name"].""> BWM </a>
zu
<a href="cars/".$row["name"].""> BWM </a>
wenn ich es tue, funktioniert es. Aber wenn ich von der BMW Seite auf die Kontaktseite klicke, erhalte ich diese seltsame URL
http://www.example.com/cars/contact
Hat jemand eine Idee was ich falsch mache?
Antworten:
1 für die Antwort № 1In Ihrem Dokument geben Sie URIs ohne einen führenden Schrägstrich an. Dies bedeutet, dass sie als relativ zur aktuellen Seite betrachtet werden.
Sie möchten hübsche URIs verwenden (wie: /cars/bmw
), was in Ordnung ist, außer dass es eine eingebettete enthält /
das sieht aus wie ein Verzeichnispfad. Diese Verzeichnispfad wird verwendet, um URIs zu erstellen, die keine führenden enthalten /
.
Die Lösung besteht darin, alle Ihre URIs mit einem führenden zu versehen /
, wodurch Unklarheiten vermieden werden.
Beispielsweise:
<a href="/cars/".$row["name"].""> BWM </a>
<a href="/contact"> Contact Page </a>