2016-11-01 14 views
0

Ich habe ein Problem mit meiner Nginx Rewrite-Regel.Nginx URL URL-Fehler

Ich habe zwei Seiten:

  • Erste Seite: category.php
  • Zweite Seite: subcategory.php

Meine Seite:

<!doctype html> 
<html> 
    <head></head> 
    <body> 
     <ul> 
      <?php 
       while($row = $smtp->fetch(PDO::ASSOC)){ 
       echo "li><a href='category.php? id='".$row['id']."'>'".$row['name']."'</a></li>"; 
       } 

       ?> 
     </ul> 
     <?php 
      while($row = $smtp->fetch(PDO::ASSOC)){ 
      echo "li><a href='subcategory.php?id='".$row['id']."'>'".$row['name']."'</a></li>"; 
      } 
      ?> 
    </body> 
</html> 

Mein Problem ist, wenn Ich schiebe einen Link mit category.php?id=3. Ich werde die gleiche Seite mit anderen Werten erhalten, aber die Links subcategory.php sieht anders kein subcategory.php?id=1

Das sah aus wie category/subcategory/2

Die FireBug richtige URL zeigen: subcategory.php?id=1.

Warum?

Meine Rewrite-Regel:

rewrite '^/category.php/(.*)$' /subcategory.php?id=$1 last; 

Ich brauche einen Link wie subcategory/1 und nicht category/subcategory/1

+0

Bitte bearbeiten Sie Ihre Frage auf die menschliche verständliche Ebene, es ist schwer zu verstehen. – Satys

+0

Sorry, es ist nicht sehr leicht zu erklären. Ich habe eine Seite mit zwei Links, category.php und subcategory.php. Wenn ich auf eine category.php klicke, bekomme ich einen neuen Inhalt aus dieser Kategorie, aber wenn ich eine Unterkategorie laden möchte, kann ich das nicht tun. Weil mein URL-Link wie Kategorie/Unterkategorie/1 aussieht. Ich brauche einen Link, um eine Unterkategorie zu laden.Right Link sollte wie Unterkategorie/1 und nicht Kategorie/Unterkategorie/1 aussehen. Der Link ändert sich, wenn ich zuerst category.php anklicke. – user6834389

+0

Gemäß Ihrem HTML-Code sieht Ihre URL wie folgt aus: baseurl/category.php und baseurl/subcategory.php. Wie wird baseurl/category/subcategory/1 in Szene gesetzt? – Satys

Antwort

1

Es gibt ein paar kleine Probleme hier.

Um Ihre Frage zu beantworten, ist der erste Teil mit den URLs in der href. Sie verwenden relative URLs und relative URLs werden zu dem hinzugefügt, was der Browser für das aktuelle URL-Verzeichnis hält.

Wenn Sie bei http://yourdomain.com/category/[something] sind dann href="subcategory.php?id..." werden Sie http://yourdomain.com/category/subcategory.php?id... senden - wie der aktuelle ULR Verzeichnis http://yourdomain.com/category/

Selbst wenn der Link virtuell ist (dh in .htacess modifiziert) der Browser das nicht weiß und es ist Browser sein, der die Links erstellt.

Sie fix wäre absoluten URLs verwenden href="/subcategory.php?id...", da dies Ihnen http://yourdomain.com/subcategory.php?id...


Ein weiteres Problem erscheint in Ihrer Umleitung senden.

Sie suchen entsprechen:

http://yourdomain.com/category.php/[Something] 

aber was ich nehme an, Sie wollen, ist entsprechen:

http://yourdomain.com/category/[something] 

Hoffnung, das hilft.