htaccess - SEO-URL

  • Hallo zusammen

    Vorab schade leider kann ich mich mit meinem Gmail Adresse nicht anmelden :(
    Ich habe eine Frage bezüglich dem folgenden Code:
    RewriteEngine on

    RewriteCond %{REQUEST_URI} !^/+(admin|images)/?
    RewriteCond %{REQUEST_URI} !(\..{2,4})$
    RewriteCond %{QUERY_STRING} ^(.*)$
    RewriteRule ^(.*)$ index.php?aktion=$1&%1 [L]


    Dieser Funktioniert somit alles auch gut.
    Nun möchte ich jedoch weitere Variable die sich auch je nach Seite ändern können mit einbeziehen.
    Mit dem momentanen RewriteRule schauen meine URL's wie folgen aus:
    http://www.xxxxxx.net/uebermich&titel=hallo

    ohne der RewirteRule schaut die URL's wir folgend aus:
    http://www.xxxxxx.net/index.php?aktion=uebermich&titel=hallo

    Nun würde ich gerne den RewriteRule umschrieben der URL soll nun wie folgen ausschauen:
    http://www.xxxxxx.net/uebermich/hallo


    Neben dem &titel= habe ich auch noch &nachricht= und &tab= also wie folgend:
    http://www.xxxxxx.net/index.php?aktion=uebermich&tab=gestern
    http://www.xxxxxx.net/index.php?akti…nachricht=hihho

    Ist dies möglich, kann mir hier jemand ein Beispiel posten damit ich einen Anhaltspunkt habe?

    Vielen Dank für eure Hilfe.
    Gruss
    Trom

  • Wenn es mehrere Parameter werden und die Anzahl der Parameter auch bei jedem Seitenaufruf variiert würde ich mittels .htaccess alles in einen GET-Parameter schreiben und diesen dann in PHP zerlegen und analysieren.

    Um mal ein Beispiel von einer privaten Fanseite zu zeigen die ich gemacht habe:

    .htaccess:

    URL:
    http://www.machone361.de/Diskographie/R…2_-_RocknRoll-7

    In meiner index.php steht dann in $_GET['request']: Diskographie/Release/~/Mach_One_-_Meisterstueck_Vol._2_-_RocknRoll-7

    Ich habe dann eine Routing-Klasse die mir diesen String in PHP mittels explode() zerlegt, Diskographie ist in dem Fall der Controller, Release ist die Action, und Mach_One_-_Meisterstueck_Vol._2_-_RocknRoll-7 der Parameter der an die Action übergeben wird.

    Klasse Route:

    PHP
    <?phpclass Route {  protected $activeHref = "";  protected $frontcontroller = array();
        public function __construct($route,Settings $settings,Navigation_Point_Repository $repository) {    if(trim($route)=="") {      $this->frontcontroller = array(          "controller"=>$settings->get("defaultController"),          "action"    =>$settings->get("defaultAction"),          "params"    =>array()      );    }    else {      $parts = explode("/~/",$route);      $first = array_shift($parts);      if(strpos($first,"/")) {        list($hrefParam,$action) = explode("/",$first);        $navigationPoint  = $repository->find()->unique($repository->href()->eq($hrefParam));        $controller       = $navigationPoint->controller;        $action           = strtolower($action);        $this->activeHref = $hrefParam;      }      else {        $navigationPoint  = $repository->find()->unique($repository->href()->eq($first));        $controller       = $navigationPoint->controller;        $action           = $navigationPoint->action;        $this->activeHref = $first;      }      $params = count($parts)?explode("/",$parts[0]):null;      $this->frontcontroller = array(          "controller"=>$controller,          "action"    =>$action,          "params"    =>$params      );    }    }  public function __get($property) {    if(!property_exists($this, $property)) {      throw new Exception("Unknown property '{$property}'");    }    return $this->$property;  }  private function resolveParams($parts) {    $params = $parts;    $params = array();    $count  = count($parts);    $i      = 0;    while($i<$count) {      $params[$parts[$i]] = $parts[$i+1];      $i+= 2;    }    return $params;  }}?>

    Die Methode resolveParams($parts) wird in diesem Beispiel nicht genutzt, da ich auf der Seite keine benannten Parameter benötige. Die Methode würde beispielsweise aus dem String "branch/1/category/12/supplier/3/orderby/articleNumber" folgendes Array bauen:

    Code
    $params = array(
        "branch"=>1,
        "category"=>12,
        "supplier"=>3,
        "orderby"=>"articleNumber"
    );

    Edit: Schön, dass das Forum hier keine Zeilenumbrüche aus Netbeans übernimmt. Das korrigiere ich jetzt nicht von Hand...

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

    Einmal editiert, zuletzt von SinnlosS (8. Januar 2013 um 15:41)

  • Ok danke, jetzt habe ich es verstanden :)
    So einfach werde ich das ganze bei mir zwar nicht Implementieren können..... hätte das von Anfang an berücksichtigen sollen......


  • So einfach werde ich das ganze bei mir zwar nicht Implementieren können..... hätte das von Anfang an berücksichtigen sollen......

    Ich glaube das denkt sich jeder Programmierer immer und immer wieder bei den unterschiedlichsten Problemen. :D
    Wichtig ist nur, dass es nicht mehrmals bei der gleichen Problemstellung passiert. :)

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook