Eigener Mod_rewrite + den von Wordpess

  • Guten Tag,
    die Mod_Rewrite Funktion von Wordpress ist einfach klasse und einfach zu aktivieren. Nun habe ich eine eigene Seite erstellt (mit eigenen Template) und bräuchte die Funktion aber nur abgewandelt.

    Aktuell habe ich es so (bsp.):

    tld.de/seite?antwort=morgen

    ich möchte daraus:

    tld.de/seite/morgen


    machen, intern muss dies entsprechend anders geregelt werden. Nun ich habe von den Mod-Rewrite von Apache keine Ahnung und wenn ich meine eigenen Codezeilen hinzu füge gibt es einen Totalfehler.

    Das habe ich mir zusammengebaut, scheint aber irgendwie falsch zu sein:

    Apache Configuration
    RewriteBase /seite
    RewriteRule ^/([-0-9a-z]*+)$ /?antwort=$1

    Wordpress hat folgendes schon hinzugefügt:

    Apache Configuration
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>

    Wie muss ich das vorhandene abändern, damit meins ebenfalls klappt?

    • 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

  • Der Fehler kommt sicherlich von der abgeänderten RewriteBase, mit der WP nichts anfangen kann.

    Versuche es mal damit:

    PHP
    RewriteRule ^seite/([-0-9a-z]*+)/$ /seite/?antwort=$1 [R=301]


    Direkt unter RewriteBase / der WP-htaccess einfügen.

    wpseek.com - Die WordPress-Code-Suchmaschine

  • Bin mir nicht sicher aber liegt es eventuell am slash nach seite/?

    Zitat

    [COLOR=#0000cc]RewriteRule [/COLOR][COLOR=#006600]^[/COLOR][COLOR=#0000cc]seite[/COLOR][COLOR=#006600]/([-[/COLOR][COLOR=#0000cc]0[/COLOR][COLOR=#006600]-[/COLOR][COLOR=#0000cc]9a[/COLOR][COLOR=#006600]-[/COLOR][COLOR=#0000cc]z[/COLOR][COLOR=#006600]]*+)/$ /[/COLOR][COLOR=#0000cc]seite[/COLOR][COLOR=#006600]/?[/COLOR][COLOR=#0000cc]antwort[/COLOR][COLOR=#006600]=$[/COLOR][COLOR=#0000cc]1 [/COLOR][COLOR=#006600][[/COLOR][COLOR=#0000cc]R[/COLOR][COLOR=#006600]=[/COLOR][COLOR=#0000cc]301[/COLOR][COLOR=#006600]] [/COLOR]

    [COLOR=#000000][COLOR=#0000cc]RewriteRule [/COLOR][COLOR=#006600]^[/COLOR][COLOR=#0000cc]seite[/COLOR][COLOR=#006600]/([-[/COLOR][COLOR=#0000cc]0[/COLOR][COLOR=#006600]-[/COLOR][COLOR=#0000cc]9a[/COLOR][COLOR=#006600]-[/COLOR][COLOR=#0000cc]z[/COLOR][COLOR=#006600]]*+)/$ /[/COLOR][COLOR=#0000cc]seite[/COLOR][COLOR=#006600]?[/COLOR][COLOR=#0000cc]antwort[/COLOR][COLOR=#006600]=$[/COLOR][COLOR=#0000cc]1 [/COLOR][COLOR=#006600][[/COLOR][COLOR=#0000cc]R[/COLOR][COLOR=#006600]=[/COLOR][COLOR=#0000cc]301[/COLOR][COLOR=#006600]] [/COLOR][/COLOR]

  • Ich habe es jetzt so:

    Apache Configuration
    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^seite/([-0-9a-z]*+)/$ /seite?antwort=$1 [R=301]
    RewriteRule . /index.php [L]
    </IfModule>

    auch wenn ich die neue RewriteRule unter RewriteBase schreibe, ändert sich nichts.

    Ich erhalte immer den selben Fehler:
    Internal Server Error
    The server encountered an internal error or misconfiguration and was unable to complete your request.

  • Zumindest 1 Fehler hab ich auf die Schnelle gefunden: "*+" ist sinnfrei - entweder kommt das Zeichen beliebig oft (*) vor ODER mindestens einmal (+). Beides zusammen dürfte schief gehen. Ansonsten würde ich nochmal prüfen ob alle Zeichen korrekt escaped sind.

  • Versuch das mal:

    Apache Configuration
    RewriteCond %{REQUEST_URI} ^/seite/(.*)/?$ [NC]
    RewriteRule . /seite?antwort=%1 [R=301,L]
    
    
    # BEGIN WordPress
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    # END WordPress

    In meinem Test hat es aus "domain/seite/seitenname" "domain/seite?antwort=seitenname" gemacht.

  • Danke für eure antworten.
    So wie es msi gemacht hat, gibt es schon mal keinen Fehler und umgeschrieben wird es auch, leider nicht so wie ich es gerne möchte.

    Ich möchte, das der jenige nicht 301 Weitergeleitet wird, sondern die Url so bleibt und intern dies anders gehandelt wird.

    Nehme ich aber das "R=301" raus, so erfolgt zwar keine Weiterleitung, aber das ganze funktioniert nicht und ich bekomme einen 404 Fehler.

Jetzt mitmachen!

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