.htaccess RewriteRules anpassen

  • Hallo,

    ich habe folgendes Problem - ich rufe eine Seite mit einem zusätzlichen Paramenter auf z.b. http://www.domain.de/meine_seite/?meineid=irrgendwas

    nun möchte ich daraus eine saubere URL machen - hatte schon folgendes probiert (leider ohne Erfolg):

    RewriteRule ^meinse_seite/(.*)/$ index.php?page_id=1&meineid=$1 [QSA,L]

    Hat jemand zufällig einen Lösungsansatz (Permlinks sind aktiviert).

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • ok versuch ichs mal anderes zu klären was ich meine:

    ich habe eine website die unter wordpress läuft - permalinks sind aktiv.
    nun habe ich ein zusätzliches script im template, dieses wird über eine variable in der url angesprochen.

    nun möchte ich auch das script als saubere url haben

    RewriteRule ^meinse_seite/(.*)/$ index.php?page_id=1&meineid=$1 [QSA,L]

    funktioniert wenn die permalinks deaktiviert sind - aber es tut es nicht mehr wenn sie aktiviert sind.

    jemand eine idee?

  • Ich vermute mal, daß es daran liegt, das WP bei aktiven Permalinks für Artikel und Seiten der Form /?p=123 oder /?page_id= ein Redirect auf die Permalink-Adresse macht.

    Du könntest also etwas in der Art probieren:

    Apache Configuration
    RewriteCond    %{QUERY_STRING} !meineid=
    RewriteRule ^(meinse_seite/)(.*)/$ $1?meineid=$2 [QSA,L]

    Die RewriteCond soll Endlosschleifen verhindern (hoffe ich mal), die Regel wird also nur ausgeführt, wenn 'meineid' noch nicht übergeben wurde.
    Ist ungeteste und ohne Garantie auf Funktionstüchtigkeit :-)

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

  • funktioniert leider nicht.

    eine andere option wäre wenn ich in einem externen script den loop starten könnte um den content von wordpress zuhollen un d auf alle funktionen zugreifen kann) - ist das möglich? bzw. gibt es dazu ein doku link?

  • Denkbar wäre auch noch, die WP-interne Rewrite-Engine zu nutzen. Dazu müßte man am Anfang der Rewrite-Rules eine neue Regel einfügen:

    PHP
    function plw123_add_my_rewrite_rules() {
     global $wp;
    
    
     // Variable bekannt machen
     $wp->add_query_var( 'meineid' );
     // Regel hinzufügen
     add_rewrite_rule( 'meine_seite/(.+?)/?$', 'index.php?page_id=1&meineid=$matches[1]', 'top' );
    }
    add_action( 'init', 'plw123_add_my_rewrite_rules' );

    Das könnte z.B. in die my-hacks.php kommen, dann einmal zu den Permalink-Einstellungen wechseln und auf [Änderungen speichern] drücken, so werden die Regeln neu geschrieben. Falls man mal in die WP-Rewrite-Regeln reingucken möchte, mit diesem kleinen php-Skript kann man sie sich anzeigen lassen:

    PHP
    <?php
    define('WP_USE_THEMES', false);
    require('./wp-blog-header.php');
    echo '<pre>';
    print_r( $wp_rewrite->wp_rewrite_rules() );
    echo '</pre>';
    ?>

    Hier sollte dann unsere eingefügte Regel ganz oben in der Liste stehen.

    In WP kann man dann auf den Inhalt von 'meineid' mit

    PHP
    global $wp;
    echo $wp->query_vars['meineid'];

    zugreifen.

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

    Einmal editiert, zuletzt von Putzlowitsch (5. Juli 2008 um 09:39)

  • Oh wie toll, Danke Putzlowitsch. So funktioniert das bei mir schonmal im Rootverzeichnis:
    http://beta.designmadeingermany.de/blog/

    Nur leider nicht in den Kategorien und Unterkategorien:
    http://beta.designmadeingermany.de/grafikdesign/blog/
    http://beta.designmadeingermany.de/grafikdesign/plakate/blog/

    Hättest Du eventuell noch einen Tipp wie ich die Regel auf die Kategorien ausweiten könnte?


  • Etwa so (ungetestet):

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

  • Hallo,

    ich hänge mich mal an diesen alten Thread da das Thema für mich gerade brandaktuell ist:

    ich habe folgende abfrage:

    Code
    http://www.mydomain.de/index.php?post_type=mytaxonomie&bereich1=neu

    Ziel soll sein eine URL wie folgt daraus zu bekommen:

    Code
    http://www.mydomain.de/mytaxonimie/neu

    Taxonomie ist eine "Custom Taxonom". "neu" ist also eine Unterkategorie.
    Anhand des Beispiels habe ich geschafft diese Rewrite Regel einzubinden, aber es greift einfach nicht.

    Die Permalinks habe ich dazu auf "Artikelname"eingestellt.
    Meine rewrite Rule die ich einbinde:

    PHP
    // Variable bekannt machen
     $wp->add_query_var( 'bereich1' );
     // Regel hinzufügen
     add_rewrite_rule( 'meine_seite/(.+?)/?$', 'index.php?bereich1=$matches[1]', 'top' );

    Das stimmt halt nicht. Was mache ich falsch?
    Ich muss auch zugeben dass ich mit diesen Platzhalter (.+?) usw nicht vertraut bin, gibts dazu einen guten Leitfaden?

    Danke

  • Du mußt dem Post-Type mit berücksichtigen, also so:

    PHP
    function plw123_add_my_rewrite_rules() {
    global $wp;
    
    
    $wp->add_query_var( bereich1' );
    add_rewrite_rule( 'mytaxonomie/(.+?)/?$', 'post_type=mytaxonomie&bereich1=$matches[1]', 'top' );
    }
    
    
    add_action( 'init', 'plw123_add_my_rewrite_rules' );

    Die Regel paßt auf Zeichenketten (URLs), die mit mytaxonomie beginnen und bei denen nach einem Schrägstrich weitere Zeichen folgen, die mit einem Schrägstrich abgeschlossen sein können oder nicht.

    post_type ist ja die Bezeichnung des Posttyps und konstant. Das muß dann genau so in der Regel abgebildet werden.

    Hier findest du etwas zu den Platzhalter-Zeichen.

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!