Lustigt, jag satt och slet mitt hår med regex igår faktiskt. Jag ville också göra en exkluderande sökning. Dvs hitta allting utom en specifik sträng.
Vad jag kämpade med var att jag tillfälligt skulle ta ner en hel sajt och ersätta den med en ny. För att göra övergången så snygg som möjligt ville jag låta besökarna mötas av en tillfällig sida som berättade om att uppdatering pågång, oavsett vilken sida dom försökte nå.
För att göra det så använde jag RedirectMatch i .htaccess-filen. RedirectMatch använder sig av regex och det var här mitt problem uppstod. För att styra om alla sidor går det att skriva såhär:
RedirectMatch /.* http://www.exempel.com/byte.html
Problemet är att jag skapar en oändlig loop då eftersom även byte.html som jag försöker visa också innefattas av regex-matchningen. Inte så lämpligt.
Så jag ville göra en matchning på alla sökvägar och filer utom just byte.html. Tyvärr visade det sig inte vara så lätt (för mig). Jag läste på en del om regex och hittade negative lookahead, men det fungerade inte med RedirectMatch. Så till slut gjorde jag en ful-lösning:
RedirectMatch /[^b].*$ http://www.exempel.com/byte.html
Det fungerade, men bara tack vare att ingen annan fil i roten började på bokstaven b...
(Jag hoppades att t.ex. [^b][^y][^t][^e] kanske skulle fungera men det gjorde det inte.)