2016-11-02 3 views
1

Ich habe ein kleines CMS mit PHP und MySQL erstellt. Jetzt versuche ich, NGINX neu zu schreiben, aber es funktioniert nicht und ich kann nicht verstehen, warum?nginx umschreiben nichts tun

(Beispiel) Ich habe eine Seite

http://www.example.com/cars.php?id=bmw

ich diese Regel zu verwenden versucht

Rewrite ^/Listings /(.*)$ /listing.html?listing=$1 zuletzt;

Von: https://www.nginx.com/blog/creating-nginx-rewrite-rules/

Aber es funktioniert nicht.

umschreiben ^/cars /(.*)$ /cars.php?id=$1 zuletzt;

Ich bekomme die gleiche hässliche URL http://www.example.com/cars.php?id=bmw

Soll ich den URL-Anker in dem PHP-Dokument ändern? Von

<a href="cars.php?id='.$row['name'].'"> BWM </a> 

zu

<a href="cars/'.$row['name'].'"> BWM </a> 

wenn ich es funktioniert. Aber wenn ich von BMW Seite auf Kontakt-Seite klicken erhalte ich diese seltsame URL

http://www.example.com/cars/contact 

Hat jemand eine Idee, was ich falsch gemacht?

Antwort

1

In Ihrem Dokument geben Sie URIs ohne führenden Schrägstrich an. Dies bedeutet, dass sie als relativ zur aktuellen Seite angesehen werden.

Sie möchten hübsche URIs (wie: /cars/bmw) verwenden, was in Ordnung ist, außer dass es ein eingebettetes / enthält, das wie ein Verzeichnispfad aussieht. Dieser Verzeichnispfad wird verwendet, um URIs zu erstellen, die keine führenden / enthalten.

Die Lösung besteht darin, alle Ihre URIs mit einer führenden / zu versehen, die jede Mehrdeutigkeit vermeiden.

Zum Beispiel:

<a href="/cars/'.$row['name'].'"> BWM </a> 
<a href="/contact"> Contact Page </a>