2016-12-22 37 views
0

Ich arbeite auf einem lokalen Server auf einer html/php Anwendung und ich versuche ohne Erfolg das Apache URL Rewrite-Modul zu verwenden.htaccess URL-Rewriting funktioniert, aber nicht die Umleitung

Die Anwendung in ./Compta/index.php gespeichert wurde. Ich habe auf eine .htaccess Datei in ./Compta/.htaccess

Ich möchte nur eine neu geschrieben URL verwenden wie: http://localhost/Compta/Test/

statt: http://localhost/Compta/index.php?page=test

und Benutzer umleiten, wenn sie auf die alte URL zu gehen versuchen

Die .htaccess-Datei enthält:

Options +FollowSymlinks 

RewriteEngine on 

RewriteRule ^([[:alnum:]]*)/$ /Compta/index.php?page=$1 [L] 

RewriteRule ^([[:alnum:]]*)$ /Compta/index.php?page=$1 [L] 

RewriteCond %{REQUEST_URI} ^/index\.php$ 
RewriteCond %{QUERY_STRING} ^page=([[:alnum:]]*)$ 
RewriteRule ^(.*)$ http://localhost/Compta/%1/ [L,R=301] 

Wenn ich t o http://localhost/Compta/Test/ die folgende Zeile funktioniert und mein Code enthält in einem div den Inhalt test.php:

RewriteRule ^([[:alnum:]]*)/$ /Compta/index.php?page=$1 [L] 

Als ich nach http://localhost/Compta/Test gehen die folgende Zeile funktioniert aber in Firefox ist die URL neu geschrieben http://localhost/Compta/index.php?page=Test und dies nicht geschieht, mit http://localhost/Compta/Test2; Die URL wird nicht neu geschrieben.

RewriteRule ^([[:alnum:]]*)$ /Compta/index.php?page=$1 [L] 

dies zu beheben und die alte URL Ich habe diese Zeilen zu umleiten:

RewriteCond %{REQUEST_URI} ^/index\.php$ 
RewriteCond %{QUERY_STRING} ^page=([[:alnum:]]*)$ 
RewriteRule ^(.*)$ http://localhost/Compta/%1/ [L,R=301] 

Aber das funktioniert nicht, und wenn ich die URL http://localhost/Compta/index.php?page=Test gehen nicht neu geschrieben http://localhost/Compta/Test/

Vielen Dank im Voraus

Antwort

0

Ich habe keine Lösung mit .htaccess gefunden, aber ich fand eine mit PHP, also fügte ich die folgenden Zeilen oben in meine PHP-Dateien :

 if(preg_match("/\/Compta\/index\.php\?page=([[:alnum:]]*)/",@$_SERVER['REQUEST_URI'],$page)&&!empty($page[1])) 
     { 
      $new_url = "/Compta/"; 
      switch (strtolower($page[1])) { 
       case "test": 
        $new_url = $new_url."Test/"; 
        break; 
       case "test2": 
        $new_url = $new_url."Test2/"; 
        break; 
       default:break; 
      } 
      header("Status: 301 Moved Permanently", false, 301); 
      header("Location: ".$new_url); 
      exit; 
     } 

ich testen, ob die URL mit „/Compta/index.php?page=“ beginnen und wenn es einem Parameter für „Seite“ ist Dann initialisiere ich die Variable, die die neue URL enthalten den Schalter Inhalt meines Parameters Ich ändere die neue URL und dann mache ich die Umleitung zu meiner neuen URL :)

Verwandte Themen