Ergebnis 1 bis 4 von 4

Thema: htaccess Aufbau QUERY_STRING / relevanter Parameter mitten in der URL

  1. #1
    Community-Moderator Avatar von stefan-at-work
    Registriert seit
    05.06.2009.
    Ort
    Bad Segeberg
    Beiträge
    1.780
    Partner-ID
    634

    Standard htaccess Aufbau QUERY_STRING / relevanter Parameter mitten in der URL

    Ich habe diverse URLs die aufgrund eines Relaunches von Joomla auf Contao umgeleitet werden müssen.
    Beispiel-URL:
    meine-domian.de/index.php?option=com_content&view=article&id=3045: artikel-alias&catid=396&Itemid=223&lang=de

    Mit
    Code:
    RewriteCond %{query_STRING} ^option=com_content(.*)$
    RewriteRule ^index\.php$ http://www.meine-domain.de? [R=301,L]
    könnte ich z.B. auf die Startseite weiterleiten. Soweit so gut. Jedoch interessiert mich lediglich der Parameter catid=. Aufgrund dieser diversen catids definiere ich, auf welche URL umgeleitet werden soll.
    Das ^ in der RewriteCond definiert ja den Anfang, $ das Ende.

    Gibt es einen Platzhalter, der nach dem ^ bis zum Parameter catid=? den entsprechenden Inhalt des Strings ignoriert?
    also quasi so: RewriteCond %{query_STRING} ^(*)catid=396(.*)$

    wobei das (*) nach dem ^ nicht funktioniert.
    Geändert von stefan-at-work (01.08.2016 um 17:27 Uhr)

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.063
    Partner-ID
    10107

    Standard

    Zitat Zitat von stefan-at-work Beitrag anzeigen
    könnte ich z.B. auf die Startseite weiterleiten. Soweit so gut.
    Einfach nur auf die Startseite weiterleiten solltest du nicht. Wenn der Inhalt einer alten URL unter einer neuen URL zu finden ist, solltest du dort hin weiterleiten. Ansonsten sollte die 404 Seite erscheinen. Aber vielleicht habe ich dich da falsch verstanden?


    Zitat Zitat von stefan-at-work Beitrag anzeigen
    könnte ich z.B. auf die Startseite weiterleiten. Soweit so gut. Jedoch interessiert mich lediglich der Parameter catid=. Aufgrund dieser diversen catids definiere ich, auf welche URL umgeleitet werden soll.
    Das ^ in der RewriteCond definiert ja den Anfang, $ das Ende.

    Gibt es einen Platzhalter, der nach dem ^ bis zum Parameter catid=? den entsprechenden Inhalt des Strings ignoriert?
    also quasi so: RewriteCond %{QUERY_STRING} ^(*)catid=396(.*)$

    wobei das (*) nach dem ^ nicht funktioniert.
    Wenn dann muss es so sein:
    Code:
    RewriteCond %{QUERY_STRING} ^(.*)catid=396(.*)$
    Du hattest den Punkt vergessen (any character). Das ^ ist aber dann überflüssig, weil durch (.*) spielt es keine Rolle, ob es am Anfang steht oder nicht, daher ist die nächste Vereinfachung
    Code:
    RewriteCond %{QUERY_STRING} (.*)catid=396(.*)$
    Darüberhinaus brauchst du den ersten Teil ja gar nicht, also kann es auch einfach
    Code:
    RewriteCond %{QUERY_STRING} .*catid=396(.*)$
    sein. Dadurch ist aber wiederum das .* überflüssig, weil das ja beliebige Zeichen matched, daher reicht auch
    Code:
    RewriteCond %{QUERY_STRING} catid=396(.*)$
    Weiters willst du ja den Wert des Parameters catid haben, oder nicht? Daher muss es im Endeffekt so lauten:
    Code:
    RewriteCond %{QUERY_STRING} catid=(.+)
    Das würde aber alles nach catid= matchen, daher musst du das weiter einschränken, zB so:
    Code:
    RewriteCond %{QUERY_STRING} catid=([0-9]+)
    Das würde nur Zahlen matchen.

    Beispiel: https://regex101.com/r/nC7qK7/1


    // oder kannst du nur bestimmte catids auf hardgecodete URLs weiterleiten? Wenn ja, dann ist die Rewritecond einfach
    Code:
    RewriteCond %{QUERY_STRING} catid=396(&|$)
    » https://regex101.com/r/nC7qK7/2
    Die Regex bedeutet übersetzt: "Suche nach dem Substring catid=396, gefolgt entweder von einem & oder es ist am Ende des Strings".


    //² falls es vorkommen könnte, dass es auch andere GET Parameter gibt, die zufällig mit "catid" Enden, dann kann man die Regex nochmals erweitern:
    Code:
    RewriteCond %{QUERY_STRING} (^|&)catid=396(&|$)
    » https://regex101.com/r/nC7qK7/3
    Geändert von Spooky (01.08.2016 um 18:02 Uhr)

  3. #3
    Community-Moderatorin & Contao-Urgestein Avatar von mlweb
    Registriert seit
    10.07.2011.
    Beiträge
    6.742
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Mitlesen bildet. Das Tool für die regulären Ausdrücke ist ja sehr nett. Lesezeichen gesetzt. Danke @Spooky
    Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
    Unterstütze bitte das Contao-Projekt (Button Links)
    Weitere Spendenmöglichkeiten
    ------------------------------------------------------------------------------------------------------
    Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
    Contao-Online-Video-Kurse: Contao Academy
    Funktionalität erweitern: Contao-Erweiterungen

    Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.




  4. #4
    Community-Moderator Avatar von stefan-at-work
    Registriert seit
    05.06.2009.
    Ort
    Bad Segeberg
    Beiträge
    1.780
    Partner-ID
    634

    Daumen hoch

    @spooky - Danke für die ausführlichen Hinweise.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •