Aloha ;)
if (preg_match('/^$/'|'/^L$/', $query_string)) {.....}
Was ist die Ursache?
Betrachte den Parameter des Funktionsaufrufs. Unabhängig vom Inhalt der Strings steht da: 'irgendwas'|'irgendwas' - die Funktion preg_match erwartet aber einen String, nicht zwei mit einem Oder-Zeichen dazwischen, mal ganz davon abgesehen, dass die Pipe in PHP für den Bitweise-Oder-Operator steht, also etwas ganz anderes täte als von dir beabsichtigt.
Was du suchst ist eigentlich folgendes: Ein einzelner regulärer Ausdruck, der entweder auf einen leeren String oder auf einen String mit einem einzelnen L matcht (der also so gesehen bis auf das L auch leer ist).
Meiner Ansicht nach solltest du das damit erreichen:
if (preg_match('/^L?$/', $query_string)) {.....}
Der Fragezeichen-Operator im Regex ist der Multiplikator für "genau einmal oder keinmal", es wird also auf Leerstring (keinmal L) und auf "L" (einmal L) gematcht.
Tipp: Mir hat was reguläre Ausdrücke angeht regexr.com bereits des Öfteren weitergeholfen, gerade wenn es um kompliziertere Sachen z.B. mit mehrfacher Verschachtelung ging.
Grüße,
RIDER