Вводная: в скрипт приходит вся строка целиком после site.ru. Это могуть быть такие строки:
/abc/
//abc/
abc/
abc/abc/
abc/index.php?utm_source=vk
Задача: пропускать URL, который соответствует условиям:
0. Первая папка не "system"
1. Между папками содержит только один слеш
2. Названия папок содержат только буквы, цифры, знак минус и подчеркивание
3. Строка может заканчиваться на /index.php
4. Строка может заканчиваться GET-параметрами (цифры, буквы, подчеркивание, минус, &, один знак ?)
В общем, сваял я такую регулярку:
^[^\/system]([a-z0-9-\/]+)*(index\.php)?(\?{1}([a-z_0-9-=&]+)+)?$/gmi
Такую строку пропускает: abc/abc/index.php?utm_source=vk
А такую нет: systemsssss/abc/index.php?utm_source=vk
Как доделать?