kostenloser Webspace werbefrei: lima-city


.htaccess RewriteRule mit Query String

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    silecom

    silecom hat kostenlosen Webspace.

    Hi,

    ich habe eine Frage zu .htaccess RewriteCond und RewriteRule in Verbindung mit Query Strings.
    Ich würde gerne folgendes URL Schema http://example.com/?abc/123-xyz/ auf http://example.com weiterleiten, nicht aber http://example.com/abc/123-xyz/.

    Nun dachte ich mir, dass es hiermit
    RewriteCond %{QUERY_STRING} ^[a-z]+/[0-9]+- [NC]
    RewriteRule ^(.*)$ http://example.com/? [R=301]
    klappen müsste, dem ist aber leider nicht so, da auch letzteres Schema auf die Hauptseite umgeleitet wird.

    Ist das überhaupt möglich?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Sorry, ich hatte zuvor Mist geschrieben.

    Ein Test bei mir ergab jetzt, dass sich deine .htaccess verhält, wie von dir gewünscht:
    http://fuerderer.12hp.de/?abc/123-xyz/
    http://fuerderer.12hp.de/abc/123-xyz/

    Hast du selbst zuvor schon an der .htaccess herumgebastelt und probiert? Denn eine 301er Weiterleitung wird gerne mal gecached und wirkt dann auch noch, wenn die .htacess wieder verändert wurde.

    Beitrag zuletzt geändert: 11.5.2015 6:41:26 von fuerderer
  4. Autor dieses Themas

    silecom

    silecom hat kostenlosen Webspace.

    Hi,

    sowie ich die RewriteRule aktiviere werden wie gesagt beide Links redirected. Sie befindet sich am Anfang der .htaccess und gecached wird es auch nicht.
  5. Wo hast du die .htaccess denn gespeichert? Kannst du einen Link schicken?
    Oder zumindest einmal, auf welchem Server du das ganze ausprobierst. (Lima-City, anderer Webhoster, xampp, ...)
    Um das Cacheverhalten zu testen, hast du die .htaccess deaktiviert, richtig? Das heißt, dann wurde auch nichts mehr weitergeleitet?
  6. silecom schrieb:
    sowie ich die RewriteRule aktiviere werden wie gesagt beide Links redirected. Sie befindet sich am Anfang der .htaccess und gecached wird es auch nicht.

    "Am Anfang" ... das könnte ein Grund sein, da Du bei der Rule nicht angegeben hast, das Rewriting zu beenden, wenn sie greift. Ein zusätzliches ",L" beim "R=301" könnte schon helfen.

    Beitrag zuletzt geändert: 12.5.2015 1:40:00 von fatfreddy
  7. Autor dieses Themas

    silecom

    silecom hat kostenlosen Webspace.

    Konnte es jetzt lösen, verstehe es allerdings nicht so ganz.

    Es gab nach dieser RewriteRule noch eine weitere RewriteRule auf die index.php mit demselben Query String als Query String (index.php?$1/$2). Dabei wird dann die .htaccess anscheinend nochmals angesteuert und meine eingangs erwähnte RewriteRule schlagend, was mir nicht bewusst war.

    Hat hierzu jemand vielleicht noch eine Erklärung?
  8. Hallo

    ich würde das ganze anders machen. ich würde erst allgemein eine umleitung per htaccess auf die index.php machen

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule .* /index.php


    und dann in php

    $URI = $_SERVER['REQUEST_URI'];
    if(strpos($URI , "?")){
         $URI_explode = explode("?" , $URI);
         $URI_explode = explode("/" , $URI_explode['1']);
    }else{
         $URI_explode = explode("?" , $URI);
    }


    alle angaben aus der URI nehmen und endsprechende aktionen ausführen.

    noch einfacher anstatt mit example.com/?abc/abc bzw example.com/abc/abc zu arbeiten kannst du einfacher example.com/?/abc/abc oder example.com/abc/abc achreiben. dann prüfst du nur noch dein $URI_explode['0'] ob da ein ? drinn steht und leitest dann endsprechend weiter

    Gruß


  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!