tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
416
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    ben78 ben78 ist offline Mitglied Bronze
    Registriert seit
    Jan 2010
    Beiträge
    34
    Hi Leutz,

    wie generiere ich sprechende Url's?

    Hier mal mein Ansatz
    .htaccess:
    Code :
    1
    
    RewriteRule ^unterseite/(.*)/(.*)/(.*).html$ /unterseite.html?wert1=$1&wert2=$2&wert3=$3 [QSA]

    Ausgangs-Link:
    PHP-Code:
         $link_string_blaettern "<a href=\"$pfad?param1=$wert1&param2=$wert2&param3=$wert3";
                                if(isset(
    $_GET['sortieren'])) $link_string_blaettern .= "&sortieren=".$_GET["sortieren"];
                                if(isset(
    $_GET['asc'])) $link_string .= "&asc";
                                elseif(isset(
    $_GET['desc'])) $link_string .="&desc";
          
    $link_string_blaettern .= "\" title=\"Vor\"><font class=\"no_bg\"> &raquo;&raquo;</font></a> \n"
    Hier funktioniert das Skript einwandfrei...Aber die Url's beim klicken auf die Sortierfunktion oder Blätterfunktion schauen dann in etwa so aus:
    Code :
    1
    
    domain.de/unterseite.html?param1=wert$1&param2=wert$2...usw.

    Ich will aber folgenden Aufbau der Url:
    Code :
    1
    
    domain.de/unterseite/wert/wert.html

    ...und damit mir das gelingt, habe ich folgendes Probiert:
    PHP-Code:
         $link_string_blaettern "<a href=\"$pfad/$wert1/$wert2/$wert3";
                                if(isset(
    $_GET['sortieren'])) $link_string_blaettern .= "&sortieren=".$_GET["sortieren"];
                                if(isset(
    $_GET['asc'])) $link_string .= "&asc";
                                elseif(isset(
    $_GET['desc'])) $link_string .="&desc";
          
    $link_string_blaettern .= "\" title=\"Vor\"><font class=\"no_bg\"> &raquo;&raquo;</font></a> \n"
    Der Link wird wie gewünscht dargestellt, nur gibt's hier folgendes Problem...und zwar funktioniert dann aber so meine Blätterfunktion nicht mehr. Und wenn z. B. Parameter2 nicht gegeben ist, dann erscheint ein doppelslash und bevor ich's vergesse...die URL wird wie folgt angezeigt: unterseit.html/wert1/wert2/wert3...Oh Maaaaaaaan.....
    Geändert von ben78 (14.12.11 um 02:57 Uhr)
     

  2. #2
    Kyôya Kyôya ist offline Mitglied Silber
    Registriert seit
    Nov 2011
    Ort
    Würzburg
    Beiträge
    62
    Hi,

    dieses Problem kannst du nicht alleine über RewriteRules lösen.
    Als erstes sollte deine RewriteRule alle Parameter in einen eigenen URL-Parameter packen:
    Code :
    1
    
    RewriteRule ^/unterseite/(.*).html$ /unterseite.html?query=$1 [QSA,L]

    Im zweiten Schritt musst du im PHP Code den URL-Paramter "query" Parsen und dort die ganzen Informationen rausholen. Dieser Parser könnte wie folgt aussehen:
    Code php:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    <?php
    class Request
    {
        private $params = array();
        
        public function __construct()
        {
            $this->parseQueryString($_REQUEST['query']);
        }
        
        private function parseQueryString($queryString, $keyPrefix = 'wert')
        {
            $queryElements = explode('/', $queryString);
            foreach ($queryElements as $key => $value) {
                $this->params[$keyPrefix . ($key + 1)] = $value;
            }
        }
        
        public function getParam($paramName, $defaultValue = null)
        {
            if (!isset($this->params[$paramName])) {
                return $defaultValue;
            }
            
            return $this->params[$paramName];
        }
    }

    Gruß Kyoya Stefan
     
    Oracle Certified MySQL 5 Professional Developer
    Zend Certified PHP 5.3 Engineer

    Vorträge, Webinare, etc im Mayflower - Blog

  3. #3
    ben78 ben78 ist offline Mitglied Bronze
    Registriert seit
    Jan 2010
    Beiträge
    34
    AHHHH...Endlich ne Antwort...Schonmal vielen Dank an der Stelle für die ersteHilfestellung

    Noch ne Frage zu folgender Zeile:
    PHP-Code:
    private $params = array(); 
    Muss ich an Stelle von $params die einzelnen ParameterVars eingeben. Also so in etwa:
    PHP-Code:
    $wert1 $wert2 $wert3 = array(); 
    ****?
     

  4. #4
    jannicars jannicars ist offline Mitglied Gold
    Registriert seit
    Jun 2011
    Beiträge
    219
    $params ist eine globale Klassen Variable und wird mit Request::parseQueryString gefüllt.
    Geändert von jannicars (14.12.11 um 17:54 Uhr)
     

  5. #5
    ben78 ben78 ist offline Mitglied Bronze
    Registriert seit
    Jan 2010
    Beiträge
    34
    Ich hab jetzt mal den gesamten Code so übernommen, wie er da steht. Aber es tut sich nichts. Das Skript läuft einwandfrei. Aber die dabei generierten URL's sind nach wie vor die selben. In meinem Link (siehe weiter oben) kommt die Variable "$pfad" vor. Diese ist wie folgt definiert:
    PHP-Code:
    $pfad $_SERVER['PHP_SELF']; 
     

Ähnliche Themen

  1. Recherche: Multilinguale sprechende URL
    Von ZodiacXP im Forum Coders Talk
    Antworten: 7
    Letzter Beitrag: 14.09.09, 13:11
  2. Sprechende Pfade in URL anstatt GET-Variablen
    Von alhambrina im Forum PHP
    Antworten: 2
    Letzter Beitrag: 08.07.08, 19:47
  3. seo urls?
    Von the_black_hawk im Forum Hosting & Webserver
    Antworten: 1
    Letzter Beitrag: 07.12.07, 14:24
  4. seo urls?
    Von the_black_hawk im Forum HTML & XHTML
    Antworten: 0
    Letzter Beitrag: 07.12.07, 14:21
  5. Antworten: 3
    Letzter Beitrag: 09.07.03, 02:22