/ / nginx rewrite mache nichts - php, nginx, url-rewriting

nginx rewrite tue nichts - php, nginx, url-rewriting

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 № 1

In 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>