2017-05-08 6 views
0

Ich habe alle meine Rewrite-Regeln funktionieren außer die für meine Seitennummerierung.Rewrite-Regel funktioniert nicht für Paginierung

hier ist, was ich versucht habe: Ich habe alle Umschreibungen mit Ausnahme der Paginierung-fehlgeschlagen, ich habe versucht, über 50 verschiedene Umschreibungen aus dem Internet alle fehlgeschlagen .. Ich habe versucht, einen Generator neu schreiben gescheitert.

meine Paginierung funktioniert wie folgt

http://example.com/list.php?p=1 

jetzt meine Rewrite ist wie

RewriteRule ^([^/][0-9]*)$ list.php?p=$1 

folgt htacess

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.*)$ $1.php 


RewriteRule ^list/([a-zA-Z0-9]+)$ list.php?page=$1 

Als ich nachgehenIch bekomme einen 500 Fehler

Ich habe eine Menge von db-Code entfernt, da alles außer der Seitenumbruch URL neu funktioniert. Egal wie ich die Links schreibe oder mod umschreibe es funktioniert nicht ich habe etwa 50 Beispiele befolgt keine gearbeitet .. aber alle anderen Umschreibungen, die ich für andere Seiten geschrieben habe funktionieren gut.

<div class="large-centered"> 

    <?php 

    $per_page = 2; 

    if (isset($_GET['page'])) { 

     $page = $_GET['page']; 
    } else { 

     $page = ""; 
    } 

    if ($page == "" || $page == 1) { 

     $page_1 = 0; 
    } else { 

     $page_1 = ($page * $per_page) - $per_page; 
    }  

    $stmt = $db->prepare("SELECT * FROM users"); 
    $stmt->execute(); 
    $stmt->store_result(); 
    $result = $stmt->get_result(); 
    $count = $stmt->num_rows; 

    if ($count < 1) { 

     echo "No Users"; 

    } else { 

     $count = ceil($count/$per_page); 

     $stmt = $db->prepare("    
      SELECT users.ID, users.Name, users.GroupID, locations.LocationCode, locations.LocationFlag 
      FROM users, locations 
      WHERE users.Location = locations.LocationCode AND GroupID != 1 ORDER BY users.ID DESC LIMIT $page_1, $per_page");    
     $stmt->execute(); 
     $result = $stmt->get_result(); 
     $stmt->close(); 


     ?> 
     <div class="pagin-nav"> 
      <ul class="pagination"> 
      <?php   
        $number_list = array();   
        for ($i = 1; $i <= $count; $i ++) { 

         if ($i == $page) { 

          echo "<li><a class='active' href='list.php?page={$i}'>{$i}</a></li>"; 

         } else { 

          echo "<li><a href='list.php?page={$i}'>{$i}</a></li>"; 

         } 
        }   
       ?>     
      </ul> 
     </div><?php 

     while ($row = mysqli_fetch_assoc($result)) { 
      $ID = $row['ID']; 
      $GroupID = $row['GroupID'];  
      $Name = $row['Name'];   

      if ($GroupID != 1) { 


      //My HTML and output 
      echo '<div class="columns small-12 medium-6 large-3 end pad">html</div>'; 

      } else { 

       return true; 
    } } } ?> 
    </div> 
    </div> 

    <div class="pagin-nav"> 
     <ul class="pagination"> 
     <?php   
      $number_list = array();   
      for ($i = 1; $i <= $count; $i ++) { 

       if ($i == $page) { 

        echo "<li><a class='active' href='list.php?page={$i}'>{$i}</a></li>"; 

       } else { 

        echo "<li><a href='list.php?page={$i}'>{$i}</a></li>"; 

       } 
      }   
      ?>   
     </ul> 
    </div> 
+0

Wo wird diese Direktive verwendet? "Aber wenn ich es tue" - Sie scheinen mitten im Satz stehen geblieben zu sein? – MrWhite

+0

'RewriteRule^list/p? (\ D *) /? $ List.php? P = $ 1 [L]' – Deadooshka

+0

@Deadooshka Ich habe das versucht und etwa 50 andere scheint keine Umschreibung dafür zu arbeiten, auch wenn ich eintippe der Pfad dazu alle meine anderen Umschreibungen arbeiten gut das wird nur nicht funktionieren – Case

Antwort

1

Disable MultiViews und schließen Sie diese Anweisung vor die Regel, dass die .php Dateierweiterung anfügt.

Da /list Karten auf den Basisnamen eines physischen (dh. list.php), MultiViews (Teil mod_negotiation) geben Ihnen Probleme (es tut genau das, was Sie versuchen, mit mod_rewrite zu tun und in einem Konflikt führen wird).

Zum Beispiel in der Stamm .htaccess Datei:

Options -MultiViews 
RewriteEngine On 

RewriteRule ^list/([a-zA-Z0-9]+)$ list.php?page=$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.*)$ $1.php [L] 

Auch gehören die L (last) Flagge auf der RewriteRule.

Beachten Sie, dass dies /list/p1 in /list.php?page=p1 umschreiben wird.

+0

wo haben Sie list.php? Page = p1 – Case

+0

Das ist, was die Richtlinie, dass ich kopiert habe Ihr Code-Snippet. Sollte dies stattdessen auf 'list.php? Page = 1' oder' list.php? P = 1' gehen (was Sie zu Beginn Ihrer Frage angegeben haben)? – MrWhite

+0

können Sie mir dabei helfen?http://stackoverflow.com/questions/43895224/make-htaccess-rule-apply-only-to-the-current-folder – Developer

Verwandte Themen