Url mit Slashes

Moin Moni,

mit PHP alleine geht dies nicht, du musst den Server entsprechend konfigurieren.

Möglichkeit 1:
Du verwendest für alle betroffenen Anfragen 1 Skript, welches du in der Server-Konfiguration als ErrorDocument 404 angibst.
Dieses Skript lässt du die ursprüngliche Anfrage-URL analysieren und nach Wunsch weiterverfahren

Möglichkeit 2:
du verwendest mod_rewrite
Damit ist es über die Serverkonfiguration möglich, HTTP-Anfragen zu analysieren und intern umzuleiten, bspw. auf die Adresse, die du nicht in der Adresszeile stehen haben möchtest.
 
Hallo!
Danke für deine Antwort!
Ich habs auch so geschafft :-)
In .htaccess den Eintrag

Code:
ForceType application/x-httpd-php

und in PHP folgende auflösung

PHP:
    $start = strpos($_SERVER['REQUEST_URI'], "page/");
    $vars = substr($_SERVER['REQUEST_URI'], $start);
    $vars = explode("/", $vars);    
    for($i = 0; $i < count($vars); $i++) {
        $_REQUEST[$vars[$i]] = $vars[++$i];
    }

jetzt nur noch die richtigen dateien includen und voilà :-)
Google sei dank!

Mfg Moni
 
Hallo!
Danke für deine Antwort!
Ich habs auch so geschafft :-)
In .htaccess den Eintrag

Code:
ForceType application/x-httpd-php

und in PHP folgende auflösung

PHP:
    $start = strpos($_SERVER['REQUEST_URI'], "page/");
    $vars = substr($_SERVER['REQUEST_URI'], $start);
    $vars = explode("/", $vars);    
    for($i = 0; $i < count($vars); $i++) {
        $_REQUEST[$vars[$i]] = $vars[++$i];
    }

jetzt nur noch die richtigen dateien includen und voilà :-)
Google sei dank!

Mfg Moni

Was macht aber dein Server, wenn jemand von Google mit diesem Link zu dir kommt? http://www.domain.foo/seite1/seite2.html
Weiss dein Server (und dein Script) dann, was es tun muss oder endet das im 404? ;)
 
Hallo!
Also wenn ich die Seite jetzt ganz normal mit Slashes aufrufe, dann meldet der header '200 OK', das passt also. Über seite1.html soll man nichts aufrufen können, da ich alles mit klassen usw aufbaue und keine direkten aufrufe erlaubt. ich habe nur php dateien und templates die ich mit smarty erstelle.
Google wird ja dann auch über diese slash-adressen kommen...
Wird das nicht so sein? Hab ich da was vergessen zu bedenken? Glaubst du, dass meine Methode schlecht für Suchmaschinen ist?
Mfg
Moni
 
Hallo!
Glaubst du, dass meine Methode schlecht für Suchmaschinen ist?
Mfg
Moni

Jup :D

Weil es nicht einfach ist...da müssten (zb.) Umlaute, Sonderzeichen, Ausländische Zeichen, Punkte usw. umgewandelt werden, jeder statische Link brauucht (um es richtig zu machen) auch eine eindeutige ID (Artikel-ID o.ä.) und das ganze muss natürlich Injection-Sicher sein, zusätzlich sollte es auch invert funktionieren...also falls jemand ein Einstiegspunkt bei dir hat, der über einen statischen Link passiert, der müsste Script-Intern zuzuordnen sein ;)

Richtige (gute) SEO-Lösungen sind deshalb nie kostenlos, weil es richtig Arbeit ist und nicht "mal eben" erledigt ist....eine simple Umschreibung klappt dagegen ohne Probleme...diese bietet dann aber keinerlei Funktionen usw.
 
danke für die Hinweise!
Ja, das wird so sein und leider kenn ich mich mit Suchmaschinen auc hnicht so wirklich aus, aber naja, ich kann ja noch wenn die seite über http://www.blablabla.de/blabla.php aufgerufen wird meine 'page'-datei includen mit den richtigen parametern, dann würde zumindest das funktionieren. aber fürs erste wird es so mal reichen bis die seite fertig ist und über die suchmaschinen mach ich mir dann noch gedanken :-)
Dankeschön!
Mfg
Moni
 
Die IDee hat mich auch schon lange gereitzt. Also hab ich mich mal hingesetzt ind mit RewriteRule geübt.

.htaccess:
Code:
#Rewrite Engine einschalten
    RewriteEngine on
#nur Pfade umleiten die keine Datei sind     
    RewriteCond %{REQUEST_FILENAME} !-f
#nur Pfade umleiten die kein Ordner sind
    RewriteCond %{REQUEST_FILENAME} !-d
# alles an meine Datei weiterleiten. Von da kann man dan machen was man will...
    RewriteRule ^(.*) rewrite.php?t=$1 [L,QSA]

mein rewrite.php
PHP:
<?php
    echo "URL: {$_SERVER['REQUEST_URI']}<br />";
    
    //TODO id-array as DB laden
    $url['gfpb'] = 1;
    $url['kerker'] = 2;
    $url['kontor'] = 3;
    
    //ulr in die Einzelteile zerlegen
    preg_match_all('/\/([^\/^&^.]+)/x', $_SERVER['REQUEST_URI'], $uri);
 
    foreach ($uri[1] as $part){
         //prüfen ob es eine seitenumleitung ist
         if (array_key_exists($part, $url)){
            //TODO id auserten
            echo "id = {$url[$part]}<br />";
         } else {
             //TODO restliche auswertingen
            echo "{$part}<br />";
         }
     }  

     //TODO weitere Verarbeitung
?>


http://localhost:85/test/kontor/edit
egibt dann die Ausgabe
Code:
URL: /test/kontor/edit
test
id = 3
edit

Hier noch ein wichtiger Link dazu
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html
 
Ich hätte noch eine weitere Frage zu diesem Thema.
Wenn ich die seite jetzt über http://www.meine-domain.de aufrufe, dann funktioniert alles ganz prima, weil ich die datei 'page' per htaccess als defaultdatei des verzeichnisses eingestellt habe... wenn ich jetzt aber eingebe http://www.meine-domain.de/page/index/test/test, dann bekomme ich ein problem. es werden nämlcih die dateien jetzt per
ttp://www.meine-domain.de/page/index/test/include/jquery/liquid-canvas/liquid-canvas.js

included... ich möchte es aber so haben:
ttp://www.meine-domain.de/page/include/jquery/liquid-canvas/liquid-canvas.js

Er fügt also alle zusätzlichen Parameter als Pfade ein... kann ich das per htaccess umgehen? oder wie sonst?
mfg
monika
 
Zuletzt bearbeitet:
Ich hab das ganze jetzt mit absoluten Pfadangaben gelöst. also statt "includes/jquery.js" nehm ich jetzt "/includes/jquery.js"...
auf meinem webspace funktioniert das auch alles dann, weil das standardverzeichnis www heißt und darin alle miene dateien liegen.
auf meinem rechner hab ich allerdings xampp installiert und ich habe mehrere projekte in das standardverzeichnis htdocs gelegt.
jetzt bräuchte ich als standardverzeichnis "htdocs/my-project"... deshalb funktioniert das mit den absoluten pfadangaben nicht mehr, weil die beiden ordnerstrukturen unterschiedlich sind.
wisst ihr eine lösung für dieses problem?
mfg
monika
 
Zurück